0

Je travaille sur une application dans laquelle "lorsque mon application est en cours d'exécution et l'utilisateur appuie sur le bouton d'alimentation" pour verrouiller le téléphone, puis avant de le verrouiller devrait jouer un son.Lecture du son sur le bouton d'alimentation enfoncé en android

J'ai cherché comment faire sur le SO à suivre des liens, mais n'a pas obtenu de solution de travail: 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?

Je don ne veut pas travailler avec une pression longue sur le bouton d'alimentation. Je veux juste jouer ma propre musique lorsque l'application/l'activité est en cours & l'utilisateur appuie sur le bouton d'alimentation pour verrouiller le téléphone.

Voici mon code que je l'ai fait jusqu'à présent:

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); 
} 
} 

Certains messages que j'ai mentionnés ci-dessus prétendent fonctionner avec cela, mais je ne reçois pas la sortie désirée. Où ai-je tort? Mon téléphone se verrouille juste sans jouer de son. me suggérer comment devrais-je aller de l'avant afin de résoudre ce problème?

Répondre

0

Pour ce faire, vous pouvez créer récepteur qui est déclenché lorsque le bouton d'alimentation presse utilisateur et jouer de la musique quand ce récepteur est déclenché:

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(); 
    } 
} 

instancier un recepteur et inscrivez-vous dans un délai onCreate de votre MainActivity:

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

Et ne pas oublier de désenregistrer à l'intérieur de votre OnDestroy MainActivity:

unregisterReceiver(myBroadCastReciever); 
+0

Merci .. son travail maintenant .. !! –