【问题标题】:Show progressbar while preparing music and increase music volume准备音乐时显示进度条并增加音乐音量
【发布时间】:2014-01-28 05:37:33
【问题描述】:

我正在开发一个收音机应用程序,其中我在 Service 中编写了 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

    }

}

【问题讨论】:

  • 请发布您尝试过的内容以及遇到的问题。
  • @MattClark 我已经发布了代码并在 1 和 2 中发布了问题

标签: android service media-player


【解决方案1】:

查看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() 中取消注册接收器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多