Android来电时停止音乐播放的流程

场景分析: 

 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的构造和发送的不了解导致走了不少弯路 .
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android的蓝牙音乐播放流程主要分为以下几个步骤: 1. 确认设备配对和连接:首先,用户需要通过系统设置将手机与蓝牙音频设备进行配对并建立连接。在设备配对完成后,Android系统会为配对的设备分配一个唯一的蓝牙地址。 2. 打开蓝牙音乐应用程序:用户在手机上打开一个蓝牙音乐播放应用程序,例如Spotify或Google音乐。这个应用程序会向系统发出请求来获取蓝牙音频设备的当前状态。 3. 启用蓝牙音频传输:应用程序收到设备状态的响应后,会请求系统启用蓝牙音频传输。这样,手机就可以通过蓝牙与配对的设备之间进行音频数据传输。 4. 播放音乐:一旦蓝牙音频传输启用,应用程序将开始播放音乐。它会将音乐数据流传输到蓝牙音频设备,并且设备会输出音频信号,使用户能够听到音乐。 5. 音乐控制:在音乐播放过程中,应用程序可以接收来自蓝牙音频设备的指令,例如播放暂停、上一曲、下一曲等。同,应用程序也可以向蓝牙音频设备发送控制指令,例如调整音量。 6. 断开连接和关闭应用程序:当用户不再需要使用蓝牙音频设备,可以通过系统设置断开连接。此外,用户还可以关闭蓝牙音乐播放应用程序,以停止音乐播放并释放系统资源。 总而言之,Android的蓝牙音乐播放流程涉及设备配对和连接、应用程序的启用和音频传输、音乐播放和控制,以及断开连接和关闭应用程序等步骤。这个流程使得用户能够通过蓝牙与音频设备进行无线音乐播放。 ### 回答2: Android 蓝牙音乐播放流程如下: 首先,需要确保设备上的蓝牙功能已经开启,并且与外部音频设备(如蓝牙耳机或扬声器)配对成功。 在Android应用中,首先需要通过BluetoothAdapter类来获取设备的蓝牙适配器实例。然后,通过调用适配器的方法来检查蓝牙是否打开,以及是否已经与外部设备配对。 接下来,需要通过BluetoothProfile类来建立与外部音频设备的连接,并且获得BluetoothA2dp或者BluetoothHeadset对象。这些对象提供了蓝牙音频传输的功能。 一旦获得了BluetoothA2dp或者BluetoothHeadset对象,就可以使用它们的方法来获取已连接的蓝牙设备列表。从中选取想要连接的设备,并调用其连接方法。 连接成功后,需要通过获取BluetoothA2dp或BluetoothHeadset的BluetoothDevice对象,并使用其方法来获取支持的音频设备列表。选择一个合适的音频设备,然后使用它的方法来启动音频播放。 在音频播放过程中,可以使用MediaPlayer类或者其他音频处理库来播放音乐。这些库通常提供了控制音频播放暂停停止等功能。 最后,当不再需要播放音乐,可以调用BluetoothA2dp或BluetoothHeadset的相应方法来停止音频播放,并且释放掉之前的连接。 总结起来,蓝牙音乐播放流程包括:开启蓝牙功能,建立与外部音频设备的连接,获取支持的音频设备列表,选择音频设备并启动音频播放,控制音频播放过程,最后释放连接。 ### 回答3: Android蓝牙音乐播放流程如下: 首先,需要确保设备的蓝牙功能已经打开并且已经连接到音频输出设备(如蓝牙耳机或蓝牙音箱)。 其次,需要获取蓝牙适配器并检查是否支持蓝牙功能。然后,搜索周围可配对的蓝牙设备,并获取相应的设备列表。 接下来,需要选择要连接的音频设备。可以根据设备名称或其他可供识别的信息来选择。 连接到音频设备后,需要建立蓝牙音频通信通道。这通常涉及到与音频设备进行配对,然后通过BluetoothSocket来建立连接。 完成蓝牙音频通信通道的建立后,就可以开始传输音频数据了。通常会创建一个用于传输音频数据的线程,通过BluetoothSocket读取音频数据并将其传输到音频设备。 同,为了实现音乐播放功能,还需要使用Android的多媒体框架(如MediaPlayer)来解码和播放音频数据。可以将从蓝牙设备读取的音频数据转发给MediaPlayer进行解码和播放。 在音乐播放期间,还需要处理状态变化和用户操作(如播放暂停停止等)。可以通过监听蓝牙设备的状态变化和用户的操作来相应地调用对应的播放控制命令。 最后,需要在应用程序结束或用户停止播放,释放蓝牙连接和关闭相关的流。 以上是简单的介绍了Android蓝牙音乐播放流程,具体的实现方式会根据开发者的需求和具体情况而有所不同。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值