各位:我想实现的是在手机来电时延时10秒再响铃+震动,下面是我的代码,结果10秒后震动是可以了,但是却没有响铃,请教一下可能是什么原因?public class PhoneReceiver extends BroadcastReceiver implements Runnable {
private Handler handler;
private Context context;
private Vibrator mVibrator01; @Override
public void onReceive(Context context, Intent intent) {
this.context = context;
// if call others,do nothing
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
}
// if be called
else {
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int mode = am.getRingerMode();
if (mode != AudioManager.RINGER_MODE_SILENT) {
am.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
}
handler = new Handler();
handler.postDelayed(this, 10000);
}
}
@Override
public void run() {
AudioManager tm = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
tm.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
tm.setStreamVolume(AudioManager.STREAM_RING, 5, 0);
mVibrator01 = (Vibrator) context.getSystemService(Service.VIBRATOR_SERVICE);
mVibrator01.vibrate(10000);
}} PS:我的广播和权限列表如下: <receiver android:name=".PhoneReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.TIME_TICK" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application> <uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" >
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS" >
</uses-permission>
<uses-permission android:name="android.permission.VIBRATE" >
</uses-permission>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" >
</uses-permission>
private Handler handler;
private Context context;
private Vibrator mVibrator01; @Override
public void onReceive(Context context, Intent intent) {
this.context = context;
// if call others,do nothing
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
}
// if be called
else {
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int mode = am.getRingerMode();
if (mode != AudioManager.RINGER_MODE_SILENT) {
am.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
}
handler = new Handler();
handler.postDelayed(this, 10000);
}
}
@Override
public void run() {
AudioManager tm = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
tm.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
tm.setStreamVolume(AudioManager.STREAM_RING, 5, 0);
mVibrator01 = (Vibrator) context.getSystemService(Service.VIBRATOR_SERVICE);
mVibrator01.vibrate(10000);
}} PS:我的广播和权限列表如下: <receiver android:name=".PhoneReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.TIME_TICK" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application> <uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" >
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS" >
</uses-permission>
<uses-permission android:name="android.permission.VIBRATE" >
</uses-permission>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" >
</uses-permission>
解决方案 »
- 关于android模拟笔记本触摸板的问题
- 如何存储服务器公钥
- android监听文件夹程序错误
- Webview 点击网页上的edit框怎么禁止他自动缩放?
- 如何寻星,及确定GPS的数据可用
- 我要在自己的android应用中放入几十张图片,怎么做才好
- 我写了一个音乐播放器的widget,为什么在桌面更新不了?
- android 中activity清空的问题
- 新手问题,AXmlResourceParser这个类在哪个jar包里面
- 求救:webView的setWebViewClient与registerHandler冲突么?
- Android如何获取ListView中被点击条目的值呢?
- 急,android AVD Manager 横屏,但是内容没横屏,求指导
tm.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
这样不行吗?
private void PlayAlarmRing() {
Uri alert = RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
try {
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(this, alert);
final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mMediaPlayer.setLooping(false);
mMediaPlayer.prepare();
mMediaPlayer.start();
}
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}