2
A
回答
2
您可以使用可檢測keyevents(包括音量鍵)的OnKeyListener。你可以找到鍵盤here。祝你好運!
0
據我所知,你不能直接在服務中聽按鍵(see this question)。
在一個不相干的筆記上,我很難想出一個理由去做你想要的東西,除了編寫惡意軟件。
0
這需要棒棒糖(V5.0/API 21)或更高
我的目標是調節從服務系統體積。任何行動都可以在新聞界採取。
public class VolumeKeyController {
private MediaSessionCompat mMediaSession;
private final Context mContext;
public VolumeKeyController(Context context) {
mContext = context;
}
private void createMediaSession() {
mMediaSession = new MediaSessionCompat(mContext, KeyUtil.log);
mMediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
mMediaSession.setPlaybackState(new Builder()
.setState(PlaybackStateCompat.STATE_PLAYING, 0, 0)
.build());
mMediaSession.setPlaybackToRemote(getVolumeProvider());
mMediaSession.setActive(true);
}
private VolumeProviderCompat getVolumeProvider() {
final AudioManager audio = mContext.getSystemService(Context.AUDIO_SERVICE);
int STREAM_TYPE = AudioManager.STREAM_MUSIC;
int currentVolume = audio.getStreamVolume(STREAM_TYPE);
int maxVolume = audio.getStreamMaxVolume(STREAM_TYPE);
final int VOLUME_UP = 1;
final int VOLUME_DOWN = -1;
return new VolumeProviderCompat(VolumeProviderCompat.VOLUME_CONTROL_RELATIVE, maxVolume, currentVolume) {
@Override
public void onAdjustVolume(int direction) {
// Up = 1, Down = -1, Release = 0
// Replace with your action, if you don't want to adjust system volume
if (direction == VOLUME_UP) {
audio.adjustStreamVolume(STREAM_TYPE,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
}
else if (direction == VOLUME_DOWN) {
audio.adjustStreamVolume(STREAM_TYPE,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
}
setCurrentVolume(audio.getStreamVolume(STREAM_TYPE));
}
};
}
// Call when control needed, add a call to constructor if needed immediately
public void setActive(boolean active) {
if (mMediaSession != null) {
mMediaSession.setActive(active);
return;
}
createMediaSession();
}
// Call from Service's onDestroy method
public void destroy() {
if (mMediaSession != null) {
mMediaSession.release();
}
}
}
相關問題
- 1. 是否有可能創建一個監聽硬件按鍵的Android服務?
- 2. 如何創建一個服務,那將聽音量按鈕?
- 3. 註冊長按音量鍵監聽器
- 4. 音量按鈕按鍵事件的監聽器
- 5. 是否可以創建一個Web服務來創建一個XML文件?
- 6. 服務器監聽localhost:8080 Apache是否仍然可以監聽端口80?
- 7. 創建事件監聽器,監聽變量中的值是否已更改
- 8. 是否可以通過動作監聽器爲框架創建新的按鈕?
- 9. 是否可以在一個偵聽變化的變量上創建一個Annotation?
- 10. 如何知道服務中哪個硬件按鍵被按下?
- 11. 在Swift中監聽硬件鍵盤按鍵
- 12. 是否可以創建WinRT服務
- 13. WinRT - 是否可以創建服務?
- 14. 如何識別音量按鈕是否按下了服務?
- 15. ServersAlive是否可以監視WCF服務?
- 16. 是否有可能創建一個可以接收郵件的C#Web服務?
- 17. 使Android服務聽取硬件按鍵新聞活動
- 18. 如何創建一個用於監聽服務器的android服務?
- 19. 是否可以監視一個C#web服務?
- 20. Javafx ScrollPane監聽鍵盤事件(按下按鍵)
- 21. AS3監聽按鍵,但全局監聽
- 22. 是否可以將一個onclick監聽器添加到QCheckBox?
- 23. requestLocationUpdates()是否創建一個sperate服務?
- 24. 我可以聽我創建的Windows服務事件嗎?
- 25. 我想創建一個全局數組以便監聽事件
- 26. 是否可以在一個鍵下設置一個NSMutableDictionary鍵?
- 27. 如何檢測在服務android按下的硬件主鍵?
- 28. 是否可以創建一個int變量名稱變量
- 29. 是否可以從NodeJs中的一個腳本創建兩個服務器?
- 30. 音量變化監聽器?
android.os.service的OnKeyListener?這甚至工作嗎?服務是一個後臺實體。它會監測onKeyDown/onKeyUp? – rupinderjeet
@ rupinderjeet47不,這是正確的,你不能聽他們在後臺服務 – keyser
我找到了一種方式,這是可能的。 – rupinderjeet