1

私はアンドロイド音楽プレーヤーに取り組んでおり、長押しの音量キーを使用してトラックをスキップしたいと考えています。いくつかの実装を見つけましたが、どれも思い通りに機能しませんでした。長押しで曲を飛ばし、短押しで音量を変えたい(正常動作)。すべてのチュートリアル/回答で、長押しはonKeyDownandで処理onKeyLongPressされましたが、短押し/通常の押しはログインのみでしたonKeyUp

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
    Log.d(TAG, "long pressed");
    switch(keyCode){
    case KeyEvent.KEYCODE_VOLUME_UP:
        songNumber++;
        playSong(songs.get(songNumber));
        return true;
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        songNumber--;
        playSong(songs.get(songNumber));
        return true;
    }
    return super.onKeyLongPress(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch(keyCode){
    case KeyEvent.KEYCODE_VOLUME_UP:
        event.startTracking();
        return true;
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        event.startTracking();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    switch(keyCode){
    case KeyEvent.KEYCODE_VOLUME_UP:
        return true;
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        return true;
    }
    return super.onKeyUp(keyCode, event);
}

これは私のコードですが、これでは曲をスキップすることしかできず、短押ししても効果がありません。だから私は1つの音量レベルしか持っていません:(

私は今何をしようとしているのか分かりません。助けていただければ幸いです。ありがとう!

-v1r0x

4

1 に答える 1

1

わかりました、私は解決策を見つけました。最高ではありませんが、うまくいきます。 OnKeyDownOnKeyLongPressはまだ同じですが、OnKeyUp現在は次のとおりです。

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if(!event.isCanceled()){
        switch(keyCode){
        case KeyEvent.KEYCODE_VOLUME_UP:
            audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
            break;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
            break;
        }
    }
    return super.onKeyUp(keyCode, event);
}
于 2012-11-09T18:17:32.903 に答える