如何在android屏幕解锁后恢复音乐
嗨,在我的应用程序中,当我单击电源按钮、主页按钮时,我需要停止音乐,后退按钮,所以我尝试使用下面的代码它的工作fn为主页和后退按钮…但我面临着电源按钮的问题…使用下面的代码,我可以停止声音,当我按下主页按钮,我的问题是我再次按下电源按钮时,声音正在播放,但我需要在解锁后恢复声音,因此,我采取了另一个falg Intent.ACTION_USER_PRESENT当我解锁屏幕时,这个falg正在调用,但在这个仅调用onresume()的标志触发之前,因此,我无法写入屏幕解锁时的声音应该像这样播放。。有人建议我吗?谢谢如何在android屏幕解锁后恢复音乐,android,android-listview,Android,Android Listview,嗨,在我的应用程序中,当我单击电源按钮、主页按钮时,我需要停止音乐,后退按钮,所以我尝试使用下面的代码它的工作fn为主页和后退按钮…但我面临着电源按钮的问题…使用下面的代码,我可以停止声音,当我按下主页按钮,我的问题是我再次按下电源按钮时,声音正在播放,但我需要在解锁后恢复声音,因此,我采取了另一个falg Intent.ACTION_USER_PRESENT当我解锁屏幕时,这个falg正在调用,但在这个仅调用onresume()的标志触发之前,因此,我无法写入屏幕解锁时的声音应该像这样播放。。
public class MainMenu extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
screenHeight = displaymetrics.heightPixels;
screenWidth = displaymetrics.widthPixels;
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
BroadcastReceiver mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter); //register
setContentView(R.layout.mainmenu);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i("","-----------onPause----------");
if (mediaPlayer1 != null) {
if (mediaPlayer1.isPlaying()) {
mediaPlayer1.pause();
Globalclass.length=mediaPlayer1.getCurrentPosition();
}
}
if(Globalclass.power==1)
{
Globalclass.hmecount=1;
Globalclass.backcount=0;
if (mediaPlayer1 != null) {
if (mediaPlayer1.isPlaying()) {
mediaPlayer1.pause();
Globalclass.lengthscreen=mediaPlayer1.getCurrentPosition();
}
}
}
}
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if(Globalclass.hmecount==1)
{
mediaPlayer1 = MediaPlayer.create(MainMenu.this, R.raw.bgmusic);
mediaPlayer1.seekTo(Globalclass.length);
mediaPlayer1.setLooping(true);
mediaPlayer1.start();
}
else if(Globalclass.backcount==1)
{
mediaPlayer1 = MediaPlayer.create(MainMenu.this, R.raw.bgmusic);
mediaPlayer1.setLooping(true);
mediaPlayer1.start();
}
else if(Globalclass.power==2)
{
mediaPlayer1 = MediaPlayer.create(MainMenu.this, R.raw.bgmusic);
mediaPlayer1.seekTo(Globalclass.lengthscreen);
mediaPlayer1.setLooping(true);
mediaPlayer1.start();
}
else if(Globalclass.power==1)
{
}
else
{
mediaPlayer1 = MediaPlayer.create(MainMenu.this, R.raw.bgmusic);
mediaPlayer1.setLooping(true);
mediaPlayer1.start();
}
Log.i("","----------length1------------"+Globalclass.length);
Log.i("","----------hmecount------------"+Globalclass.hmecount);
Log.i("","----------backcount------------"+Globalclass.backcount);
Log.i("","----------power------------"+Globalclass.power);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i("-----------onDestroy----------","");
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_HOME)) {
Globalclass.hmecount=1;
Globalclass.backcount=0;
System.out.println("KEYCODE_HOME");
Intent intent = new Intent(
Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
}
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
System.out.println("KEYCODE_BACK");
Globalclass.backcount=1;
Globalclass.hmecount=0;
Intent intent = new Intent(
Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
return true;
}
return false;
}
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
}
public class ScreenReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
// DO WHATEVER YOU NEED TO DO HERE
Globalclass.power=1;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
// AND DO WHATEVER YOU NEED TO DO HERE
}
else if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)){
Globalclass.power=2;
}
}
}
尝试在活动中使用此功能:
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus)
//play music
else
//pause music
}
当您的应用程序获得或失去焦点时,此api总是在活动中进行调整。我认为在您的情况下,最好在Mainfest文件中处理您的场景。如果解锁屏幕发生任何操作,请放置这些文件以允许您的应用程序接收广播消息
<receiver android:name=".ScreenReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF"/>
<action android:name="android.intent.action.SCREEN_ON"/>
</intent-filter>
</receiver>
我希望这有帮助嗨,谢谢..工作正常..但当屏幕显示顶部的一个条时,我不想要那个条
public class ScreenReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON))
{
Intent intent = new Intent();
intent.setClass(context, ScreenLockActivity.class);
startActivity(intent);
}
else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
{
//Perform a specific action if you need
}
}
}