各位:我想实现的是在手机来电时延时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>

解决方案 »

  1.   

    响铃触发?我直接用的 AudioManager tm = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            tm.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
    这样不行吗?
      

  2.   

    这个是播放系统提示音的单元,如果要播放铃声,把TYPE_NOTIFICATION改成TYPE_ALARM
    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();
    }
    }
      

  3.   

    去掉setStreamVolume方法,与这个没关系,我自己写的ok了