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

謝謝..現在它的工作..! –