0

シンプルなメディアプレーヤーを実装していますが、ハンドラーを使用してプレーヤーを処理したいです。例-私のOnClick:

public void playerControls(View v) {
    switch (v.getId()) {
        case R.id.Play:
            if (!PlayerService.isPlay()) {
                Log.i(TAG, DeviceHelper.getMethodName() + " Media start play");
                play.setImageResource(R.drawable.pause);
                service.play();
                trackTitle.setText(service.getTrackTitle());
            } else {
                Log.i(TAG, DeviceHelper.getMethodName() + " Media pause");
                play.setImageResource(R.drawable.play);
                service.pause();
                trackTitle.setText("Paused...");
            }
            break;
        case R.id.NextTrack:
            Log.i(TAG, DeviceHelper.getMethodName() + " Next track please");
            if (PlayerService.isPlay()) {
                service.nextTrack();
                trackTitle.setText(service.getTrackTitle());
            }
            break;
        case R.id.PreviousTrack:
            Log.i(TAG, DeviceHelper.getMethodName() + " Previous track please");
            if (PlayerService.isPlay()) {
                service.previousTrack();
                trackTitle.setText(service.getTrackTitle());
            }
            break;
    }
}

そして、私は次のようなハンドラでメッセージを送信したい:

case R.id.NextTrack:
        Log.i(TAG, DeviceHelper.getMethodName() + " Next track please");
        if (PlayerService.isPlay()) {
        Message m = new Message;    
        m.what = MyConstant;
        handler.sendMessage(m);
        trackTitle.setText(service.getTrackTitle());
        }
        break;

そして、このメッセージを別のクラスで処理し、そこでロジックを実装します。しかし、この実装では、メッセージが表示されません。

助けていただけませんか?どうも

4

1 に答える 1

0

Messenger を使用してメッセージを送信し、コールバックを処理するパブリック インターフェイスを作成します。

public interface MyCallbacks {
    public void handleMessage(Message m);
}

次に、メッセンジャーを宣言します。

final Messenger mMess = new Messenger(new MyHandler));

class MyHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
        switch(msg.what) {
            case i: 
            if (mCallback != null)
                mCallback.handleMessage(msg);
        }
    }
}

次に、これを処理したい場合はいつでも次のようにします。

public class handlingClient implements MyCallbacks {
    @Override
    public void handleMessage(Message msg) {
        //handles the msg here
    }
}
于 2014-01-21T19:11:46.737 に答える