如何在Android上的Thread中播放音乐?

时间:2015-03-09 20:54:41

标签: android android-mediaplayer android-runonuithread

我正在尝试在Android中编写代码来播放音乐。但是我在一个线程中启动音乐,因此音乐正在破碎,我需要在线程中播放音乐,因为我已通过蓝牙插槽接收音乐名称。

因此,线程将继续侦听套接字,以获取更新的音乐文件名。但是在播放音乐的过程中它正在破碎而且没有正常播放。

mycode的:

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();
        }
    });
} }

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

0 个答案:

没有答案