91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

android音樂播放簡單實(shí)現(xiàn)的簡單示例(MediaPlayer)

利用MediaPlayer完成一個(gè)最簡單的音樂播放。這個(gè)基本的控制掌握后,可直接利用為背景樂的控制。

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、域名與空間、虛擬主機(jī)、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

為了能夠?qū)崿F(xiàn)播放,在界面方面,我們需要三個(gè)控制按鈕,分別是:Play(播放)、Pause(暫停)、Stop(停止)

請看activity_main.xml

<?xml version="1.0" encoding="utf-8"?>


  

在MainActivity.java首先聲明一個(gè) MediaPlayer 播放器。

private MediaPlayer mediaPlayer = new MediaPlayer();

由于音樂播放也是需要專門的權(quán)限的,所以在 onCreate 中動(dòng)態(tài)申請權(quán)限,然后才初始化播放器。

//權(quán)限判斷,如果沒有權(quán)限就請求權(quán)限
    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
      ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
    } else {
      initMediaPlayer();//初始化播放器 MediaPlayer
    }

播放器的初始化方法

private void initMediaPlayer() {
    try {
      File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");
      mediaPlayer.setDataSource(file.getPath());//指定音頻文件路徑
      mediaPlayer.setLooping(true);//設(shè)置為循環(huán)播放
      mediaPlayer.prepare();//初始化播放器MediaPlayer

    } catch (Exception e) {
      e.printStackTrace();
    }
  }

在 onCreate中需要實(shí)例化三個(gè)按鈕

    Button btnPlay = (Button) findViewById(R.id.btnPlay);
    Button btnPause = (Button) findViewById(R.id.btnPause);
    Button btnStop = (Button) findViewById(R.id.btnStop);

    btnPlay.setOnClickListener(this);
    btnPause.setOnClickListener(this);
    btnStop.setOnClickListener(this);

btnPlay.setOnClickListener(this) 這種寫法,需要類的擴(kuò)展支持。所以,MainActivity 增加了 implements View.OnClickListener

復(fù)制代碼 代碼如下:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

獲取權(quán)限的部分,需要用戶操作,根據(jù)權(quán)限的給予情況,軟件要做出不同的反應(yīng)。獲得了權(quán)限,就去初始化;沒獲得權(quán)限,就去通知用戶。

  @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, "拒絕權(quán)限,將無法使用程序。", Toast.LENGTH_LONG).show();
          finish();
        }
        break;
      default:
    }

  }

統(tǒng)一在一個(gè) onClick 方法內(nèi)處理界面所有按鈕的點(diǎn)擊事件。

  @Override
  public void onClick(View v) {
    switch (v.getId()){
      case R.id.btnPlay:

        //如果沒在播放中,立刻開始播放。
        if(!mediaPlayer.isPlaying()){
          mediaPlayer.start();
        }
        break;
      case R.id.btnPause:
        //如果在播放中,立刻暫停。
        if(mediaPlayer.isPlaying()){
          mediaPlayer.pause();
        }
        break;
      case R.id.btnStop:
        //如果在播放中,立刻停止。
        if(mediaPlayer.isPlaying()){
          mediaPlayer.reset();
          initMediaPlayer();//初始化播放器 MediaPlayer
        }
        break;
      default:
        break;
    }
  }

注意 case R.id.btnStop 中,mediaPlayer.reset() 后,我們重新對播放器進(jìn)行了初始化。如果沒有這條語句,實(shí)測的效果是點(diǎn)擊了停止按鈕后,再點(diǎn)擊開始按鈕是無法順利播放音樂的。感興趣的朋友可以實(shí)驗(yàn)一下。

onDestroy() 的邏輯很容易理解,就是徹底清理音樂播放占用的資源了。

@Override
  protected void onDestroy() {
    super.onDestroy();
    if(mediaPlayer != null){
      mediaPlayer.stop();
      mediaPlayer.release();
    }
  }

完整代碼示例:

package com.cofox.myaudio;

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.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.File;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

  private MediaPlayer mediaPlayer = new MediaPlayer();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btnPlay = (Button) findViewById(R.id.btnPlay);
    Button btnPause = (Button) findViewById(R.id.btnPause);
    Button btnStop = (Button) findViewById(R.id.btnStop);

    btnPlay.setOnClickListener(this);
    btnPause.setOnClickListener(this);
    btnStop.setOnClickListener(this);


    //權(quán)限判斷,如果沒有權(quán)限就請求權(quán)限
    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
      ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
    } else {
      initMediaPlayer();//初始化播放器 MediaPlayer
    }


  }

  private void initMediaPlayer() {
    try {
      File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");
      mediaPlayer.setDataSource(file.getPath());//指定音頻文件路徑
      mediaPlayer.setLooping(true);//設(shè)置為循環(huán)播放
      mediaPlayer.prepare();//初始化播放器MediaPlayer

    } catch (Exception 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, "拒絕權(quán)限,將無法使用程序。", Toast.LENGTH_LONG).show();
          finish();
        }
        break;
      default:
    }

  }

  @Override
  public void onClick(View v) {
    switch (v.getId()){
      case R.id.btnPlay:

        //如果沒在播放中,立刻開始播放。
        if(!mediaPlayer.isPlaying()){
          mediaPlayer.start();
        }
        break;
      case R.id.btnPause:
        //如果在播放中,立刻暫停。
        if(mediaPlayer.isPlaying()){
          mediaPlayer.pause();
        }
        break;
      case R.id.btnStop:
        //如果在播放中,立刻停止。
        if(mediaPlayer.isPlaying()){
          mediaPlayer.reset();
          initMediaPlayer();//初始化播放器 MediaPlayer
        }
        break;
      default:
        break;
    }
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    if(mediaPlayer != null){
      mediaPlayer.stop();
      mediaPlayer.release();
    }
  }
}

當(dāng)然,你不能忘記了在 AndroidManifest.xml 添加權(quán)限聲明。

<?xml version="1.0" encoding="utf-8"?>

  
...

android音樂播放簡單實(shí)現(xiàn)的簡單示例(MediaPlayer)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


新聞名稱:android音樂播放簡單實(shí)現(xiàn)的簡單示例(MediaPlayer)
網(wǎng)站鏈接:http://www.yuzhuanjia.cn/article/jggdji.html
主站蜘蛛池模板: 91在线精品亚洲一区 | 国产91影院 | 91婷婷精品国产综合久久 | 91在线精品老司机免费播放 | 成人字幕在线 | 成人宗合网 | 福利社毛片| 白丝jk女仆爆乳自慰喷水流白浆 | 91亚洲精品天堂 | av一级中文在线观看 | 一区二区三区不卡在线 | 91久久99久91天天拍拍 | 成人中文在线观看 | 99久久精品国产精品亚洲 | 国产av巨作无 | 韩国三级激情 | av中文字幕一区二区 | 99久久精品免费观看欧美 | 国产av综合第一页 | 99久久无码一区人妻贼王 | 91蜜桃国产成人精品区 | 福利姬一区二区三区在线观看 | 俺来也网站 | 国产av无码一区二区三区dv | 91精品国产韩国主播门 | 丰满少妇av无码专区 | 福利姬一区二区三区在线观看 | 91新地址 | v无码东京热亚洲男人的天堂 | 古装一级淫片a免费播放口 刮伦欲罢不能 | av无码专 | av无码a在 | 91大神精品在线观看 | 国产aⅴ无码专区亚洲 | 午夜福利网在线 | 午夜小视频男女在线观看 | 午夜大片无码体验区sh国产 | 海角精产国品一二三区别 | 囯产无码一区 | 91av视频精品一区二区三区 | 午夜男女激情av |