android实现延时响铃遇到的有关问题(100分)

android实现延时响铃遇到的问题(100分求助)
各位:我想实现的是在手机来电时延时10秒再响铃+震动,下面是我的代码,结果10秒后震动是可以了,但是却没有响铃,请教一下可能是什么原因?


Java code

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:我的广播和权限列表如下:
XML code

  <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>



------解决方案--------------------
解决办法是:事先获取原铃声文件的路径,然后自己创建代码播放这个文件。
------解决方案--------------------
这个是播放系统提示音的单元,如果要播放铃声,把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();
}
}