zoukankan      html  css  js  c++  java
  • Android之Mediaplayer音乐播放器

    Main3Acticity.java

    package csdn.example.com.notification.PlayerAudioTest;
    
    import android.Manifest;
    import android.content.pm.PackageManager;
    import android.media.MediaPlayer;
    import android.os.Environment;
    import android.support.annotation.NonNull;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    import java.io.File;
    import java.io.IOException;
    
    import csdn.example.com.notification.R;
    
    public class Main3Activity extends AppCompatActivity implements View.OnClickListener {
    
    private MediaPlayer mediaPlayer = new MediaPlayer();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main3);
            Button play = (Button) findViewById(R.id.play);
            Button pause = (Button) findViewById(R.id.Pause);
            Button stop = (Button) findViewById(R.id.stop);
            play.setOnClickListener(this);
            pause.setOnClickListener(this);
            stop.setOnClickListener(this);
            if (ContextCompat.checkSelfPermission(Main3Activity.this, Manifest.permission.
                    WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
                ActivityCompat.requestPermissions(Main3Activity.this,new String[]{
                        Manifest.permission.WRITE_EXTERNAL_STORAGE
                },1);
            }else {
                initMediaPlayer(); //初始化MediaPlayer
            }
        }
    
        private void initMediaPlayer() {
            Log.d("123","到了吗");
            File file = new File(Environment.getExternalStorageDirectory(),
                    "music.mp3");
            try {
                mediaPlayer.setDataSource(file.getPath()); //指定音频文件的路径
                mediaPlayer.prepare(); //让MediaPlayer 进入到准备状态
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            switch (requestCode){
                case 1:
                    if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                        initMediaPlayer();
                    }else {
                        Toast.makeText(this,"拒绝权限将无法使用程序",Toast.LENGTH_SHORT).show();
                        finish();
                    }
                    break;
                default:
            }
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.play:
                    if(!mediaPlayer.isPlaying()){
                        mediaPlayer.start(); //开始播放
                        Toast.makeText(this,"该音频时长为"+mediaPlayer.getDuration()+"毫秒",Toast.LENGTH_SHORT).show();
                    }
                    break;
                case R.id.Pause:
                    if(mediaPlayer.isPlaying()){
                        //将MediaPlayer对象重置到刚刚创建的状态
                        mediaPlayer.pause(); //暂停播放
                    }
                    break;
                case R.id.stop:
                    if(mediaPlayer.isPlaying()){
                        mediaPlayer.reset(); //停止播放
                        initMediaPlayer();
                    }
                    break;
                default:
                    break;
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if(mediaPlayer != null){
                mediaPlayer.stop();
                mediaPlayer.release();
            }
        }
    }
    

    运行截图如图所示
    这里写图片描述

    activity_main3

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:orientation="vertical"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/play"
            android:text="Play"
            />
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Pause"
            android:text="Pause"
            />
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/stop"
            android:text="Stop"
            />
    
    </LinearLayout>
    
  • 相关阅读:
    【C#进阶系列】06 类型和成员基础
    纪中5日T1 1564. 旅游
    纪中17日T1 2321. 方程
    纪中17日T2 2322. capacitor
    纪中10日T1 2313. 动态仙人掌
    纪中14日听课小结 图论 最短路 二分图 差分约束
    一个抓猫的游戏 消遣GAME 持续更新中!
    洛谷P1464 Function  HDU P1579 Function Run Fun
    洛谷P1976 鸡蛋饼
    纪中12日T1 2307. 选择
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781957.html
Copyright © 2011-2022 走看看