准备音乐时显示进度条并增加音量

时间:2014-01-28 05:37:34

标签: android service media-player

我正在开发一个广播应用程序,其中我在服务中编写了MediaPlayer类,按钮点击启动和关闭服务以启动和停止MediaPlayer。但在项目中我面临两个问题

1.我想在准备音乐时显示进度。尽管我已在服务中编写代码,因此无法显示ProgressBar

2.当我们音量增大时,而不是音乐音量铃声音量正在增加。

我花了很多时间并没有取得成功,请告诉我如何解决这个问题。您的宝贵建议将非常感谢。

PlayerService.java

public class PlayerService extends Service implements OnPreparedListener {
    private MediaPlayer mPlayer;

    public PlayerService() {
        // TODO Auto-generated constructor stub
        super();
    }

    @Override
    public IBinder onBind(Intent arg0) {

        return null;

    }

    @Override
    public void onCreate() {
        super.onCreate();
        try {
            mPlayer = new MediaPlayer();
            mPlayer.setDataSource(Live.mUrl);
            mPlayer.prepare();
            mPlayer.setOnPreparedListener(this);
            // mVisualizerView = (VisualizerView)
            // findViewById(R.id.visualizerView);
            // mVisualizerView.link(mPlayer);

            // Start with just line renderer
            // addLineRenderer();
        } catch (Exception e) {
            // TODO: handle exception

        }

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        mPlayer.start();
        return 0;

    }

    @Override
    public void onDestroy() {
        mPlayer.release();
        super.onDestroy();

    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        // TODO Auto-generated method stub

    }

}

1 个答案:

答案 0 :(得分:0)

查看registerMediaButtonEventReceiver(ComponentName broadcastReceiver);

定义处理ACTION_MEDIA_BUTTON的BroadcastReceiver。收到的意图包括一个额外字段EXTRA_KEY_EVENT,其中包含导致广播的键事件。您可以使用此键事件来获取按下的键。

这只是一个示例代码。可能存在语法错误。

// in onCreate of activity
registerMediaButtonEventReceiver(mediaReceiver ); 

// later somewhere in activity.
MediaButton_Receiver mediaReceiver = new MediaButton_Receiver();

class MediaButton_Receiver implements BroadcastReceiver {
     void onReceive(Intent intent) {

          KeyEvent ke = (KeyEvent)intent.getExtra(Intent.EXTRA_KEY_EVENT); 
          if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) {
               //Decrease your volume
          }
          // Similarly other key codes .......
     } 
}

在onPause()或onStop()

中取消注册接收器