1

サイドボリュームボタンを無効にしたいので、ボリュームを制御する唯一の方法は、Androidアプリ内の専用アクティビティからです。次のコードを追加することで、すべてのアクティビティで無効にすることができました。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.d(TAG, "onKeyDown = " + keyCode);
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
        return true;
        }
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
        return true;
    }
    return super.onKeyDown(keyCode, event);

}

しかし、アプリから開始するアクティビティ(たとえば、ギャラリーアプリを開始する)で無効にする方法がわかりません。

「VolumeLocker」アプリが同様のことを行う可能性があることを私は知っています。

4

1 に答える 1

3

パブリック API 内では、独自のアクティビティの外で主要なイベントを抑制することはできません。それを行うことができたアプリがある場合、プラットフォームの設計者によって悪意があると見なされ、ある時点で修正されます。

そのアプリの説明に基づいています (注: 個人的には使用したことがありません)。

ボリューム設定の偶発的な変更を防ぐために、今すぐボリューム ロッカーをインストールしてください。このアプリは、トレイ通知またはポップアップによって、行った変更を確認することで、偶発的な音量変更を防ぐのに役立ちます。変更を承認しない場合、ボリュームは設定された秒数以内にリセットされます...タイムアウトを「インスタント」に設定すると、ロックされたボリュームはプロンプトなしで即座に元に戻ります。

それが実際に行っていることは、この回答と同様の手法を使用して音量ボタンをリッスンし、行われた変更を即座に元に戻すことだと思います(っぽい)。これにより、ユーザーはキーを押しても何も起こらなかったように見えますが、実際には音量が変更され、その後すぐに元に戻りました。

于 2012-08-09T03:01:02.513 に答える