0

我在一个应用程序中“当我的应用程序正在运行,并且用户按下电源按钮时”锁定手机,然后锁定它应该发挥的声音之前的工作。播放声音压在Android的

...我已经寻找如何做到这一点上等等以下链接,但没有得到任何有效的解决方案: Want to Access Power Button events in android

Disable Screen Lock(Power) Button in Android

Override Power button just like Home button

How to hook into the Power button in Android?

我不不想长时间按下电源按钮。我只是想发挥自己的音乐,当应用程序/活动运行&用户按下电源按钮来锁定手机。

这里是我的代码是什么我迄今所做的:

AndroidManifest.xml中

<uses-permission android:name="android.permission.PREVENT_POWER_KEY" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

</application> 

MainActivity.java

package com.example.lockunlocksound; 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.KeyEvent; 

public class MainActivity extends Activity { 

static MediaPlayer mp; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 


@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if (keyCode == KeyEvent.KEYCODE_POWER) { 
     // Do something here... 
     mp= MediaPlayer.create(this, R.raw.click123); 
     mp.start(); 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 
} 

这上面我提到的索赔与这项工作的一些职位,但我没有得到期望的输出。我在哪里错了? 我的手机才刚刚锁定不播放声音。 建议我应该怎么才能解决这个先走?

回答

0

为了实现这一目标,您可以创建接收器,当用户按下电源按钮被触发并播放音乐时,将接收器被触发:

public class MyBroadCastReciever extends BroadcastReceiver { 

    MediaPlayer mediaPlayer = null; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     mediaPlayer = MediaPlayer.create(context, R.raw.click123); 
     mediaPlayer.start(); 
    } 
} 

实例化一个reciever并在您的MainActivity中的onCreate注册它:

MyBroadCastReciever myBroadCastReciever = new MyBroadCastReciever(); 
IntentFilter screenStateFilter = new IntentFilter(); 
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF); 
registerReceiver(myBroadCastReciever, screenStateFilter); 

而且不要忘记注销这里面你MainActivity中的onDestroy:

unregisterReceiver(myBroadCastReciever); 
+0

谢谢..现在它的工作..! –