简单的音乐播放app-MediaPlayer,seekBar

Android 多媒体框架支持多种多样的多媒体文件,因此可以很轻松的将音频、视频、图片集成到应用中去。 通过使用 MediaPlayer APIs.

多媒体文件可以存储在应用程序的 raw 文件夹下,也可以存储在手机的文件系统中,甚至可以是来自与网络的流媒体。
这篇文章展示了如何写出一个性能不错,用户体验良好的多媒体用用程序。
 

注意: 你只能通过标准输出设备来播放音频文件。目前来讲,就是通过手机的扬声器和蓝牙耳机。 不能在通话时播放音频文件

在使用 MediaPlayer 开发你的应用之前,必须在 mainfest 文件中声明需要使用哪些功能。

如果你打算使用 MediaPlayer 来播放网络流媒体内容,那么你的应用需要有这个权限

 

 如果你想要应用不灭屏或者进程不进入休眠状态,或者你像要在你的应用程序中使用 MediaPlayer.setScreenOnWhilePlaying() 方法或 MediaPlayer.setWakeMode() 方法, 你需要添加这个权限

首先在布局文件中

            android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
                    android:id="@+id/play"
            android:layout_width="10dp"
            android:layout_height="40dp"
            android:layout_weight="1"
            android:text="播放"/>
                    android:layout_width="10dp"
            android:layout_height="40dp"
            android:layout_weight="5"
            android:text="伸手摘下了-阿肆"
            android:paddingLeft="30dp"
            android:gravity="center_vertical"/>
                    android:id="@+id/stop"
            android:layout_width="10dp"
            android:layout_height="40dp"
            android:layout_weight="1"
            android:text="停止"/>
   
            android:id="@+id/seekbar"
        android:layout_width="match_parent"

        android:layout_height="wrap_content" />

 

在main.java

 

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    setOnclick();
    initViewData();
    //处理进度条更新
     mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 0:
                    //更新进度
                    int position = mediaPlayer.getCurrentPosition();
                    int time = mediaPlayer.getDuration();
                    int max = seekBar.getMax();
                    seekBar.setProgress(position * max / time);
                    break;
                default:
                    break;
            }

        }
    };
}
private void setOnclick() {
    mediaPlayer1 =  MediaPlayer.create(this,R.raw.ok);
    btn_paly.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mediaPlayer.start();
            //后台线程发送消息进行更新进度条
            final int milliseconds = 50;
            new Thread(){
                @Override
                public void run(){
                    while(true){
                        try {
                            sleep(milliseconds);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                        mHandler.sendEmptyMessage(0);
                    }
                }
            }.start();
        }
    });
    btn_stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mediaPlayer.pause();
        }
    });
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            //手动调节进度
            // TODO Auto-generated method stub
            int dest = seekBar.getProgress();
            int time = mediaPlayer.getDuration();
            int max = seekBar.getMax();
            mediaPlayer.seekTo(time*dest/max);
        }

        @Override
        public void onStartTrackingTouch(SeekBar arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
            // TODO Auto-generated method stub

        }
    });
 
}
private void initView() {
    btn_paly = findViewById(R.id.play);
    btn_stop = findViewById(R.id.stop);
    seekBar = findViewById(R.id.seekbar);

}

 

你可能感兴趣的:(android)