0

我正在尝试在 Android 中编写代码来播放音乐。但是我在一个线程中开始播放音乐,所以音乐中断了,我需要在线程中播放音乐,因为我已经通过蓝牙插座接收到音乐名称。

因此,线程将继续监听套接字,以获取更新的音乐文件名。但是在播放音乐时它会中断并且无法正常播放。

我的代码:

package com.example.musicexample;

import java.io.IOException;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends ActionBarActivity {

Button btnPlay;
MediaPlayer mPlayer;
Thread canThread;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     btnPlay = (Button) findViewById(R.id.btnPlay);

     mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.a);

     btnPlay.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            canThread = new Thread(new Runnable() {

                @Override
                public void run() {
                    while(!Thread.currentThread().isInterrupted()) {


                            MainActivity.this.runOnUiThread(new Runnable()
                            {
                                public void run()
                                {

                                    if(mPlayer.isPlaying()){
                                        mPlayer.stop();
                                        mPlayer.reset();
                                        try {
                                            mPlayer.prepare();
                                        } catch (IllegalStateException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        } catch (IOException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        }
                                        mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.a);
                                    }

                                    mPlayer.start();

                                }
                            });

                    }

                }

            });

            canThread.start();
        }
    });
} }

这是上面的代码,请告诉我,我怎样才能在线程中正确播放音乐?

4

0 回答 0