场景分析:
1. 电话接入时共可分为两个场景:
1). 电话于响铃模式时在电话接入的时候会先行停止音乐播放,然后播放电话铃音接着显示来电界面等待用户的
接入操作
2). 电话为无声模式及用户没有设置响铃的模式,当用户在来电界面实施接听操作的时候系统会停止音乐播放进
而进入通话界面
2. 电话挂断的时候恢复音乐的播放:当电话断接后系统底层会向上层发送消息,上层接到消息后会对连接做一些后
续操作,其中包括恢复原界面、恢复原播放的音乐等
流程分析:
1. 电话于响铃模式下在电话接入的时候停止音乐的播放:
场景分析:
1. 电话接入时共可分为两个场景:
1). 电话于响铃模式时在电话接入的时候会先行停止音乐播放,然后播放电话铃音接着显示来电界面等待用户的
接入操作
2). 电话为无声模式及用户没有设置响铃的模式,当用户在来电界面实施接听操作的时候系统会停止音乐播放进
而进入通话界面
2. 电话挂断的时候恢复音乐的播放:当电话断接后系统底层会向上层发送消息,上层接到消息后会对连接做一些后
续操作,其中包括恢复原界面、恢复原播放的音乐等
流程分析:
1. 电话于响铃模式下在电话接入的时候停止音乐的播放:
1). RIL在接收到请求的时候会向GsmCallTracker广播消息,而GsmCallTracker在接收到该消息的时候会继续
向上层的CallManager广播
2). CallManager在这个只充当了一个转播者的角色,它会继续将消息传播给CallNotifier
3). 而CallNotifier接收到消息后会判断来电是否需要查询,不查询则会直接设置声音模式(包含停止音乐播放并
开始响铃)并显示来电界面等待用户的下一步操作; 若需要查询则会在查询接收后执行此部分过程
2. 电话于无声模式下当用户执行接听操作的时候停止音乐的播放:
1). 此场景的流程较为简单因为其整个流程是由上层发向下层的,当用户实施了接听的操作时系统 就会捕获该信
息并直接开始调用函数进入接入电话的准备操作, 其中就包括现行停止音乐播放然后调整后声音模式等过程
3. 电话挂断后系统恢复原播放音乐的任务:
1). 本场景下的流程前部分较场景一较为相似,且其走向也大体相同。GsmCallTracker在接收到RIL发送来的
消息后会执行handlePollCalls函数,先更新了本连接为断开状态然后将该消息向外广播
2). 通过CallManager的中转,CallNotifier得到连接断开的消息然后会处理一些善后操作,包含恢复音乐播放等
时序分析:
1. 电话于响铃模式下在电话接入的时候停止音乐的播放的时序图示:
2. 电话于无声模式下当用户执行接听操作的时候停止音乐的播放的时序图示:
3. 电话挂断后系统恢复原播放音乐的任务的时序图示:
其他:
1. 分析接入电话的时候停止音乐播放、电话挂断后恢复音乐播放的这两个流程,其实涉及了整个通话流程的
大部分内容,我首先是找到了关闭音乐和恢复音乐的关键点然后再从RIL层向上开始研究电话接入的过 程。
刚开始的时候我在RIL.java中一直走不出去,后来分析得原因主要是对于Message的构造和发送的不了解
导致走了不少弯路
2. 刚刚开始学习Android的Framework开发,虽然只有点Java的底子,但还是希望能越来越好!
1). RIL在接收到请求的时候会向GsmCallTracker广播消息,而GsmCallTracker在接收到该消息的时候会继续
向上层的CallManager广播
2). CallManager在这个只充当了一个转播者的角色,它会继续将消息传播给CallNotifier
3). 而CallNotifier接收到消息后会判断来电是否需要查询,不查询则会直接设置声音模式(包含停止音乐播放并
开始响铃)并显示来电界面等待用户的下一步操作; 若需要查询则会在查询接收后执行此部分过程
2. 电话于无声模式下当用户执行接听操作的时候停止音乐的播放:
1). 此场景的流程较为简单因为其整个流程是由上层发向下层的,当用户实施了接听的操作时系统 就会捕获该信
息并直接开始调用函数进入接入电话的准备操作, 其中就包括现行停止音乐播放然后调整后声音模式等过程
3. 电话挂断后系统恢复原播放音乐的任务:
1. 分析接入电话的时候停止音乐播放、电话挂断后恢复音乐播放的这两个流程,其实涉及了整个通话流程的大部分内容,我首先是找到了关闭音乐和恢复音乐的关键点然后再从RIL层向上开始研究电话接入的过 程。刚开始的时候我在RIL.java中一直走不出去,后来分析得原因主要是对于Message的构造和发送的不了解导致走了不少弯路 .
相关推荐
### Android来电时停止音乐播放的流程学习 #### 场景分析 在Android系统中,针对来电时音乐播放的控制机制可以分为以下两种典型场景: 1. **电话处于响铃模式时**: - 当有来电时,系统首先会自动暂停正在后台...
在Android平台上开发应用程序时,音乐播放功能是许多用户所期待的。这个"Android程序研发源码Android 音乐播放源码.zip"文件提供了一个实际的示例,可以帮助开发者深入理解如何在Android上实现一个音乐播放器。源码...
5. **来电处理**:考虑到手机设备的特性,需要监听来电事件,当电话接入或拨出时,暂停音乐播放并记录当前播放位置,电话结束时恢复播放。 6. **语言支持**:通过Android的资源文件(res/values/strings.xml)设置多...
总结,这个实例项目涵盖了Android自定义对话框的创建、来电监听、权限管理、服务与BroadcastReceiver的使用等多个核心知识点,对于学习和实践Android来电弹屏功能具有很好的参考价值。通过深入研究这个项目,开发者...
同时,可能还需要实现`BroadcastReceiver`来监听系统事件,如来电时暂停音乐。 5. **通知栏控制**:为了让用户在通知栏中能控制音乐播放,需要利用`Notification`类创建可交互的通知。这样,即使应用被最小化,用户...
电话监听功能则确保来电或拨出电话时,音乐播放能够暂停,并记录当前播放位置。 **系统结构** Android应用通常由四个层次组成: 1. **操作系统层(OS)**:基础操作系统,这里是Android系统。 2. **各种库...
- **AudioManager**:这是Android的音频管理服务,可以用来播放、暂停、停止和控制音量。我们可以用它来播放我们自己的提示音。 - **音频资源**:首先,你需要将提示音文件(如.mp3或.ogg)放入项目的res/raw目录...
同时,开发者还需要了解如何启动、绑定和停止服务,以及如何通过BroadcastReceiver处理系统广播,比如在耳机拔出或来电时暂停音乐。 4. **文件操作**:音乐播放器可能需要读取存储在设备上的音乐文件,这涉及到文件...
2. 通知提醒:收到消息、来电或其他通知时,设备可以振动以提醒用户。 3. 模拟触感:在输入法、滑动解锁等场景中,振动可以模拟按键按下的触感,提升用户体验。 4. 用户自定义振动模式:允许用户自定义振动模式,...
- **BroadcastReceiver**:广播接收器,监听系统事件,如来电,以便在通话时暂停音乐播放。 - **数据库设计**:可能使用SQLite数据库存储音乐元数据,如歌曲列表、播放历史等。 3. **需求分析**: - 用户界面:...
本项目"安卓音乐播放器"是针对初学者的一个良好实践,它涵盖了基本的播放、暂停、停止播放以及来电时自动暂停等功能。下面将详细解析这些知识点。 1. **多媒体框架**: 安卓系统提供了Android Media Framework,这...
Android系统将声音分为多种类型,如报警声(STREAM_ALARM)、音乐(STREAM_MUSIC)、铃声(STREAM_RING)、系统声音(STREAM_SYSTEM)和电话声音(STREAM_VOICE_CALL),这种细致的分类有助于实现更精准的音频管理和...
通过本书的学习,读者将能够掌握Android Studio的基础知识、高级功能以及实际开发流程。 #### 二、设置Android Studio开发环境 ##### 2.1 系统要求 在安装Android Studio之前,确保你的计算机满足以下最低系统...
- `AudioManager.STREAM_MUSIC`用于播放音乐。 - `AudioManager.STREAM_RING`用于铃声播放。 - `AudioManager.STREAM_ALARM`用于警报声播放。 - `AudioManager.STREAM_SYSTEM`用于系统声音播放。 #### 五、JNI...
在`onStopTrackingTouch()`方法中,停止滑动时,可以执行额外的操作,如更新UI显示当前音量。 4. 实时更新UI 当用户在SeekBar上滑动时,我们需要实时更新UI以显示当前的音量状态。这可以通过修改TextView或其他...
例如,在开发音乐播放器时,可以选择`MODE_STREAM`以支持流媒体播放;而在实现简单的铃声播放功能时,则可以采用`MODE_STATIC`以减少延迟并节省内存。 通过本篇的学习,希望能帮助读者在实际项目中更加灵活地运用`...
在Android手机系统测试中,打断事件测试是一项至关重要的任务,它涉及到用户在使用应用程序时可能遇到的各种中断情况,以及系统如何正确地管理这些中断并恢复应用程序的状态。本文将深入探讨Android打断事件测试的...
- 每个状态的触发条件,如来电时会暂停Activity,新的Activity覆盖时会停止当前Activity。 这个讲座不仅介绍了Android的基本概念,还深入到实际开发中常用的组件和流程,对于初学者或希望深化Android知识的开发者...
交叉事件测试关注在特定的操作流程中,应用是否能够处理其他应用程序或系统事件(如来电、短信、通知等)的交叉影响。 兼容性测试则确保应用在不同设备、操作系统版本和配置下能够正常运行,无重大功能缺失或性能...
当用户按下电源键或接收到来电时,AMS会触发屏幕的熄灭和锁定操作,此时应用会被暂停或者停止运行。 屏幕锁的实现主要涉及以下组件: 1. KeyguardService:这是Android系统中负责屏幕锁定的核心服务。它监控用户的...