0

sendKeyDownUpSyncに問題があります。ウィジェットで使用して、組み込みの音楽プレーヤーを制御したいと考えています。ほぼ正しく動作します。ほとんどの場合、関数を呼び出すとき:

public void previousTruck()
    {
        final Instrumentation inst = new Instrumentation();
        new Thread(new Runnable() {         
            public void run() { 
                   new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_MEDIA_PREVIOUS);

        }).start();     
    }

プレイリストから音楽を変更し始めますが、多くの場合、なぜですか? プレイリストから次の曲への「一歩」だけを作りたい。

4

1 に答える 1

2

OnCreateのどこかに

myThread = new Thread()
{
    public void run()
    {
        Instrumentation m_Instrumentation = new Instrumentation();
        m_Instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_MEDIA_PREVIOUS);
    }
};

以前のトラックのどこかに

myThread.start();

PS気をつけて!! run()を呼び出さずにスレッド オブジェクトを作成すると、メモリ リークが発生します -を参照してください。OnCreate内にスレッド オブジェクトを作成し、次の画面の向きの変更までrun()呼び出しがない場合、画面の向きの変更中に発生します。そのため、 start()を呼び出す直前に Thread オブジェクトを作成するのが最善の方法です。

于 2012-10-15T19:36:46.967 に答える