活动从锁定屏幕开始时没有声音

Rag*_*agZ 0 audio android alarmmanager

这似乎是一个奇怪的问题.我正在使用AlarmManager设置自定义音轨的闹钟.活动开始并正常播放音乐,但是当我锁定电话时,活动开始但音频没有播放.

这是我正在使用它的代码.

onCreate方法

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP,"My Wake Log");
    mWakelock.acquire();
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    setContentView(R.layout.sampleAlarm);
            mediplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
            mediplayer.setDataSource(Environment.getExternalStorageDirectory()+"track1/1.mp3");                     
                            mediplayer.setVolume(100,100);
            mediplayer.prepare();
            mediplayer.setLooping(true);
            mediplayer.start();
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么.

Rag*_*agZ 6

我弄清楚了.并解决了这个问题.我在onStop和onPause方法中添加了一个mediaplayer版本,当手机从锁定模式唤醒时,由于某种原因,它会重复触发onStop和onPause.所以我在onStop和onPause中添加了一个isFinishing,以确保活动实际上已停止.

if(this.isFinishing(){
   mediplayer.stop();
   mediplayer.release();
}
Run Code Online (Sandbox Code Playgroud)