मेरे पास बैकएंड पर चलने वाले मेरे एप्लिकेशन में एक सेवा है, जब मैं बटन वॉल्यूम दबाता हूं और बटन वॉल्यूम डाउन दबाता हूं तो सेवा शुरू की जा सकती है।फ़ोन लॉक होने पर वॉल्यूम बटन सुनें
public class SettingsContentObserver extends ContentObserver {
int previousVolume;
Context context;
public SettingsContentObserver(Context c, Handler handler) {
super(handler);
context=c;
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
previousVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
}
@Override
public boolean deliverSelfNotifications() {
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
int delta=previousVolume-currentVolume;
if(delta > 0)
{
System.out.println("Decreased") ;
Intent intent = new Intent(context, MyAlarmService.class);
context.stopService(intent);
previousVolume=currentVolume;
}
else if(delta < 0)
{
System.out.println("Increased");
Intent intent = new Intent(context, MyAlarmService.class);
context.startService(intent);
previousVolume=currentVolume;
}
}
}
मैं जब मेरे फ़ोन लॉक होने पर (स्क्रीन के बंद होने), जब मैं नेट में खोज मुझे लगता है, मैं इसे परीक्षण है कि मैं एक BroadcastReceivre का उपयोग करना चाहिए एक ही काम करने के लिए चाहते हैं, लेकिन यह नहीं है काम।
public class YourBoardcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("get something", "i dont know what!!");
String intentAction = intent.getAction();
KeyEvent event = null;
if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
event = (KeyEvent) intent
.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
}
if (event == null) {
return;
}
int keycode = event.getKeyCode();
int action = event.getAction();
long eventtime = event.getEventTime();
if (keycode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE
|| keycode == KeyEvent.KEYCODE_HEADSETHOOK) {
if (action == KeyEvent.ACTION_DOWN) {
Intent intent1 = new Intent(context, MyAlarmService.class);
context.stopService(intent1);
if (isOrderedBroadcast()) {
abortBroadcast();
}
else if (action == KeyEvent.ACTION_UP) {
Intent intent11 = new Intent(context, MyAlarmService.class);
context.startService(intent11);
}
if (isOrderedBroadcast()) {
abortBroadcast();
}
}
}
}
}
एंड्रॉयड प्रकट में मैं जोड़ें:
<receiver android:name="YourBoardcastReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON" />
</intent-filter>
</receiver>
और methode पर MainActivity में oncrete मैं जोड़ें:
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
ComponentName mRemoteControlResponder = new ComponentName(getPackageName(),
YourBoardcastReceiver.class.getName());
दलीलों मैं मुझे कुछ मदद दे सकते हैं, सोचता।