我的Android心得(5)--响铃、震动、状态栏提示

本文详细介绍了如何在Android应用中实现响铃、震动和状态栏提示功能,包括使用AudioManager调整响铃模式,利用Vibrator进行设备震动,以及创建状态栏通知来提醒用户。
摘要由CSDN通过智能技术生成

目标:希望在特定情况下,通过响铃、震动、状态栏提示提醒用户


一、响铃

AudioManager能够调整响铃模式,音量等与音频相关的。

http://blog.sina.com.cn/s/blog_5418969101012yde.html

响铃实际靠MediaPlayer播放特定Uri下的音乐

// 使用来电铃声的铃声路径
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
// 如果为空,才构造,不为空,说明之前有构造过
if(mMediaPlayer == null)
	mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(context, uri);
mMediaPlayer.setLooping(true); //循环播放
mMediaPlayer.prepare();
mMediaPlayer.start();

二、震动

vibrator

vibrator = (Vibrator)mContext.getSystemService(mContext.VIBRATOR_SERVICE);
// 等待3秒,震动3秒,从第0个索引开始,一直循
Android 平台上,可以通过以下方式判断当前是否处于通话状态: 1. 使用 TelephonyManager 类的 getCallState() 方法获取当前电话的呼叫状态。该方法返回值为 int 类型,表示电话状态的各种情况,如下所示: TelephonyManager.CALL_STATE_IDLE:电话空闲状态,没有通话和等待。 TelephonyManager.CALL_STATE_RINGING:电话响铃状态,等待来电接听。 TelephonyManager.CALL_STATE_OFFHOOK:电话接通状态,正在通话中。 2. 在 Android 9.0 及以上版本中,还可以使用 TelecomManager 类的 addListener() 方法注册一个通话状态监听器,以便实时获取通话状态的变化情况。该方法需要传入一个 CallStateListener 对象,该对象实现了 onCallStateChanged() 方法,用于处理通话状态的变化事件。 以下是一个简单的示例代码: ```java public class MainActivity extends AppCompatActivity { private TelephonyManager mTelephonyManager; private CallStateListener mCallStateListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); mCallStateListener = new CallStateListener(); mTelephonyManager.listen(mCallStateListener, PhoneStateListener.LISTEN_CALL_STATE); } @Override protected void onDestroy() { super.onDestroy(); mTelephonyManager.listen(mCallStateListener, PhoneStateListener.LISTEN_NONE); } private class CallStateListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String phoneNumber) { super.onCallStateChanged(state, phoneNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE: Log.d("MainActivity", "电话空闲"); break; case TelephonyManager.CALL_STATE_RINGING: Log.d("MainActivity", "电话响铃"); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.d("MainActivity", "电话接通"); break; } } } } ``` 注意:为了保证应用程序的性能和电量效率,建议在不需要监听通话状态时,调用 TelephonyManager 的 listen() 方法,将监听器从系统中注销。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值