Android应用--简、美音乐播放器添加电话监听

3. 控制音量

4. 获取专辑图片

5. 在线下载歌词

6. 在线搜索音乐

7. 在线下载音乐

8. 实现有趣功能–甩歌

9. 界面美化–实现专辑倒影

10.实现左右界面切换

11.实现在通知栏显示播放状态

12.实现音乐播放的桌面小控件

暂时想到这些功能,如果朋友们有什么建议的话,可以直接给我留言。

在贴电话状态监听功能代码之前,把AppConstant这个类也贴一下,这个只是用来存放播放控制信息的,有网友说要看看,所以在这里贴一下吧。

package com.wwj.sb.domain;

/**

  • 应用常量类

  • @author wwj

*/

public class AppConstant {

public class PlayerMsg {

public static final int PLAY_MSG = 1; //播放

public static final int PAUSE_MSG = 2; //暂停

public static final int STOP_MSG = 3; //停止

public static final int CONTINUE_MSG = 4; //继续

public static final int PRIVIOUS_MSG = 5; //上一首

public static final int NEXT_MSG = 6; //下一首

public static final int PROGRESS_CHANGE = 7;//进度改变

public static final int PLAYING_MSG = 8; //正在播放

}

}

那好,继续完善小巫的简、美音乐播放器,因为一个好的应用软件应该考虑到各种情况,​
就那音乐播放器来说,如果播放音乐过程中,来了一个电话,可能是“永远不会打电话给你的人”,如果这时候你的音乐还在后台悠哉的播放,我想你会疯掉的,永远不会打电话给你的人可能真的永远不打了。这里只是开个玩笑,所以呢,要考虑到这种情况,只要来电了,那么播放器应该能暂停一下,好让你好好打个电话。下面的实现很简单,不多解释,直接上代码:

1、添加权限

2. 获取TelephonyManager对象,调用listen方法监听来电状态

// 添加来电监听事件

TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // 获取系统服务

telManager.listen(new MobliePhoneStateListener(),

PhoneStateListener.LISTEN_CALL_STATE);

3.实现监听类

/**

  • @author wwj

  • 电话监听器类

*/

private class MobliePhoneStateListener extends PhoneStateListener {

@Override

public void onCallStateChanged(int state, String incomingNumber) {

switch (state) {

case TelephonyManager.CALL_STATE_IDLE: // 挂机状态

Intent intent = new Intent(PlayerActivity.this, PlayerService.class);

playBtn.setBackgroundResource(R.drawable.play_selector);

intent.setAction(“com.wwj.media.MUSIC_SERVICE”);

intent.putExtra(“MSG”, AppConstant.PlayerMsg.CONTINUE_MSG); //继续播放音乐

startService(intent);

isPlaying = false;

isPause = true;

break;

case TelephonyManager.CALL_STATE_OFFHOOK: //通话状态

case TelephonyManager.CALL_STATE_RINGING: //响铃状态

Intent intent2 = new Intent(PlayerActivity.this, PlayerService.class);

playBtn.setBackgroundResource(R.drawable.pause_selector);

intent2.setAction(“com.wwj.media.MUSIC_SERVICE”);

intent2.putExtra(“MSG”, AppConstant.PlayerMsg.PAUSE_MSG);

startService(intent2);

isPlaying = true;

isPause = false;

break;

default:

break;

}

}
}

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

[外链图片转存中…(img-480KCHDN-1719083324074)]一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day7 —— 大数据技术之Hive

Hive快速入门系列 Hive的概述什么是Hive?使用Hive的原因 Hive架构Hive安装Hive配置文件修改启动Hive以命令行方式启动(在$HIVE_HOME/bin目录下)以JDBC连接启动(beeline方式连接) Hive基本操作Hive数据库操作Hive表操作…

css 动画

transform的3D动画 3D形变函数会创建一个合成层来启用GPU硬件加速 translate transform: translateY(100px);transform: translateX(100px);transform: translateZ(100px);transform: translate3d(100px,100px,100px); // x,y,z的简写rotate deg弧度 transform: rotateX(-40…

C语言学习记录20240622

这次需要用 C 语言库 Allegro 写爆破彗星游戏。项目有一些描述如需要绘制飞船、彗星、子弹,需要响应按键实现飞船加速、减速、转向、开火,需要绘制弹道,需要实现彗星旋转、缩放,需要碰撞检测,需要显示计分。 这些用 w…

Redis—SortedSet数据类型及其常用命令详解

文章目录 一、Redis概述SortedSet类型1 ZADD:向有序集合添加成员2 ZREM:从有序集合中移除一个或多个成员3 ZSCORE : 获取sorted set中的指定元素的score值4 ZRANK:获取sorted set 中的指定元素的排名5 ZCARD:获取sorted set中的元…

赵丽颖纯白茉莉绽放温柔之美

赵丽颖纯白茉莉,绽放温柔之美在这个繁忙喧嚣的娱乐圈,赵丽颖以其独特的魅力,成为了无数人心中的白月光。近日,赵丽颖工作室发布了一组live图,她身着一袭温柔白裙,宛如一朵盛开的纯白茉莉花,美得…

kali linux安装中文输入法

kali linux安装中文输入法:先进入root权限 第1步:安装fctix sudo apt-get install fcitx第2步:安装fcitx-pinyin输入法 apt-get install fcitx-pinyin第3步:配置输入法 打开 Fcitx配置 应用,点击 ,去除勾…

音视频的Buffer处理

最近在做安卓下UVC的一个案子。正好之前搞过ST方案的开机广告,这个也是我少数最后没搞成功的项目。当时也有点客观原因,当时ST要退出机顶盒市场,所以一切的支持都停了,当时啃他家播放器几十万行的代码,而且几乎没有文档…

RIP动态路由配置

1、搭建网络 搭建拓扑、规划IP地址、划分网段、设置端口 2、配置交换机,路由器 三层交换机配置 Switch>enable Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#hostname S3560S3560(config)#vlan 10 S3560(con…

【Excel经验】字符串处理方法

概览-公式汇总 序号公式功能公式公式示例公式说明1把多列内容拼接在一起,作为新的一列的内容CONCATENATE (text1,text2,…)CONCATENATE(A2,“#”,B2,“”,C2)用于根据多个列的内容拼成我们指定格式的内容,拼接的内容通常来源于原始数据,同时…

深度学习论文: Depth Anything V2

深度学习论文: Depth Anything V2 Depth Anything V2 PDF: https://arxiv.org/pdf/2406.09414v1 代码:https://depth-anything-v2.github.io/ PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks …

51单片机定时器中断配置

测试环境 单片机型号:STC8G1K08-38I-TSSOP20,其他型号请自行测试; IDE:Keil C51; 定时器配置及主要代码 以定时器T0为例,查看手册,有4种工作模式:模式0(16位自动重装载…

MSPM0G3507——GPIO例程讲解1——input_capture

函数: 参数: 返回值: 主函数代码: #include "ti_msp_dl_config.h"extern volatile uint32_t interruptVectors[];int main(void) {SYSCFG_DL_init(); //把所有的LED灯和按键初始化了一…

LangChain:如何高效管理 LLM 聊天历史记录?

LangChain 团队发布了一篇关于使用 Dragonfly DB 来有效管理 LangChain 应用程序聊天历史记录的教程。 该教程旨在解决用户在使用 LangChain 应用程序时普遍遇到的一个问题:如何高效地管理聊天历史记录。 LangChain 团队在推文中强调了 Dragonfly DB 在管理聊天历…

【vue3|第12期】Vue3的Props详解:组件通信

日期:2024年6月19日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

【Redis】黑马点评短信登录

https://blog.csdn.net/qq_33888850/article/details/129770077 https://blog.csdn.net/weixin_51515308/article/details/128010464 https://www.bilibili.com/video/BV1cr4y1671t?p24 导入数据库 https://github.com/MagicToDo/hm-dianping sql文件在 hm-dianping-init\src…

计算机网络:运输层 - TCP首部格式 连接的创建与释放

计算机网络:运输层 - TCP首部格式 & 连接的创建与释放 TCP首部格式源端口 目的端口序号确认号数据偏移保留控制位窗口检验和紧急指针 TCP连接创建 - 三次握手TCP传输过程TCP连接释放 - 四次挥手 TCP首部格式 TCP的首部如下: 首部的前20 byte是固定的…

【物联网】室内定位技术及定位方式简介

目录 一、概述 二、常用的室内定位技术 2.1 WIFI技术 2.2 UWB超宽带 2.3 蓝牙BLE 2.4 ZigBee技术 2.5 RFID技术 三、常用的室内定位方式 3.1 信号到达时间 3.2 信号到达时间差 3.3 信号到达角 3.4 接收信号强度 一、概述 GPS是目前应用最广泛的定位技术&#xff0…

一种基于稀疏学习的旋转机械故障诊断方法(MATLAB)

稀疏表示方法是一种利用最少原子在过完备字典上表示或逼近信号的方法,该方法具有信号表示的高分辨率、稀疏性、强抗干扰能力和自适应性等优点。稀疏表示聚焦于设计合适的稀疏表示字典和挖掘有用的稀疏先验信息,其核心思想是将故障特征信息近似表示为字典…

Linux下VSCode的安装和基本使用

应用场景:嵌入式开发。 基本只需要良好的编辑环境,能支持文件搜索和跳转,就挺OK的。 之所以要在Linux下安装,是因为在WIN11上安装后,搜索功能基本废了,咋弄都弄不好,又不方便重装win系统&#x…

LLM功能应用的测试艺术:策略与实践

在人工智能技术日新月异的今天,大规模语言模型(LLMs)凭借其强大的自然语言处理能力,正逐渐成为众多应用和服务的核心驱动力。从智能客服到创作辅助,从信息检索到个性化推荐,LLMs的广泛应用对测试策略提出了全新的挑战。本文旨在探讨针对拥有LLM功能的应用或软件,如何制定…