1. 程式人生 > >Android 使用MediaPlayer播放assets或者raw目錄的音訊檔案

Android 使用MediaPlayer播放assets或者raw目錄的音訊檔案

原始碼下載:

https://download.csdn.net/download/qq_31939617/10443928下載

使用MediaPlayer播放assets目錄下的媒體檔案

1) 通過Context.getAssets()方法獲得AssetManager物件
2) 通過AssetManager物件的openFd(String name)方法開啟指定的原生資原始檔夾,返回一個AssetFileDescriptor物件
3) 通過AssetFileDescriptor的getFileDescriptor()得到一個FileDescriptor物件
4) 通過public void setDataSource (FileDescriptor fd, long offset, long length)來建立MediaPlayer物件
5) 呼叫MediaPlayer.prepare()方法準備音訊
6) 呼叫MediaPlayer的start()、pause()、stop()等方法控制

先上圖:
這裡寫圖片描述

這裡寫圖片描述
MainActivity.class

package com.example.sz.mediaplayerdemo;

import android.content.Context;
import android.media.AudioManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import
android.media.MediaPlayer; import android.support.annotation.Nullable; import android.util.Log; import android.view.View; import android.webkit.WebView; import android.widget.Button; import java.io.IOException; /** * 使用MediaPlayer播放asset目錄下的音樂MP3和raw目錄下的音樂MP3 */ public class MainActivity extends
AppCompatActivity implements View.OnClickListener {
private static final String TAG = "MainActivity"; private Button openAssetMusic; private MediaPlayer mediaPlayer; private Button pause; private Button openRawMusic; private Button pauseRawMusic; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { openAssetMusic = findViewById(R.id.openAssetMusic); openAssetMusic.setOnClickListener(this); pause = findViewById(R.id.pause); pause.setOnClickListener(this); openRawMusic = findViewById(R.id.openRawMusic); openRawMusic.setOnClickListener(this); pauseRawMusic = findViewById(R.id.pauseRawMusic); pauseRawMusic.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.openAssetMusic: //開始播放 openAssetMusics(); break; case R.id.pause: //暫停播放 mediaPlayer.pause(); break; case R.id.openRawMusic: //開始播放 openRawMusicS(); break; case R.id.pauseRawMusic: //暫停播放 mediaPlayer.pause(); break; } } /** * 開啟raw目錄下的音樂mp3檔案 */ private void openRawMusicS() { mediaPlayer = MediaPlayer.create(this, R.raw.please_get_close); //用prepare方法,會報錯誤java.lang.IllegalStateExceptio //mediaPlayer.prepare(); mediaPlayer.start(); } /** * 開啟assets下的音樂mp3檔案 */ private void openAssetMusics() { try { //播放 assets/a2.mp3 音樂檔案 AssetFileDescriptor fd = getAssets().openFd("identification_success.mp3"); mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength()); mediaPlayer.prepare(); mediaPlayer.start(); } catch (IOException e) { e.printStackTrace(); } } }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:text="assets播放"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/openAssetMusic"/>

    <Button
        android:text="暫停assets"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/pause"/>
    <Button
        android:text="raw播放"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/openRawMusic"/>
    <Button
        android:text="暫停raw"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/pauseRawMusic"/>
</LinearLayout>

原始碼下載:

https://download.csdn.net/download/qq_31939617/10443928下載

相關推薦

Android 使用MediaPlayer播放assets或者raw目錄音訊檔案

原始碼下載: https://download.csdn.net/download/qq_31939617/10443928下載 使用MediaPlayer播放assets目錄下的媒體檔案 1) 通過Context.getAssets()方法獲得Asset

Android如何獲取assets或者raw目錄的視訊檔案路徑播放視訊

獲取assets的檔案方法 String mp4FilePath = "file:///android_asset/Kotlin與ava共存.mp4"; 再呼叫 mVideoVie

Android實戰】播放assets或者raw資料夾下的視訊檔案

(1)assets資料夾下 AssetFileDescriptor afd = getAssets().openFd("guide_video.mp4");              mediaPlayer.setDataSource(afd.getFileDescript

android播放assets資料夾下音訊檔案

<span style="white-space:pre"> </span>/** * 把音樂音量強制設定為最大音量 */ AudioManager mAudioManager = (AudioManager) getSystemS

Android 使用MediaPlayer播放assets目錄音訊檔案

private AssetManager assetManager; private MediaPlayer playRing() { MediaPlayer player = null; try {

Android MediaPlayer播放raw資源封裝類

import android.content.Context; import android.media.MediaPlayer; import com.bhuitong.yibaocan.R; public class MediaUtil { MediaPlayer mPlay

Android MediaPlayer 播放器網路音訊播放總結

        在近期的Android 系統MediapPalyer使用中,碰到了不少問題。其中一些問題也是在特殊的條件下才會出現,嘗試很多方法才解決。這裡做了總結,也跟大家分享一下: 1.播放器需要多執行緒實現         一般我們會把MediaPlayer放到Ser

Android MediaPlayer播放音訊與視訊

使用MediaPlayer播放音訊與視訊 播放音訊 首先創建出一個MediaPlayer物件 MediaPlayer mMediaPlayer = new MediaPlayer(

Android MediaPlayer 播放各種來源的音訊檔案,特效控制

MediaPlayer通過資源ID播放Raw目錄下音訊資原始檔: MediaPlayer mMediaPlayer; mMediaPlayer = MediaPlayer.create(th

Android 中級教程之------Android MediaPlayer播放mp3的例項!

Android 中級教程之——Android MediaPlayer播放mp3的例項! 大家好我們今天研究的是Android中很重要也最為複雜的媒體播放器—MediaPlayer. Android的MediaPlayer包含了Audio和video的播放

Android複製res/raw目錄檔案到SD卡下

前言        在應用開發中,我們會經常遇到操作工程中assets和res/raw目錄下的檔案,那麼這兩個目錄有什麼用呢?assets和res/raw工程目錄下都可以存放一些小於1M(2.3版本以前要求,否則將不能讀出資料。),這些檔案將被打包到APK中供應用使用。as

Android mediaplayer 播放本地音樂檔案

上一個部落格講到了搜尋本地音樂檔案,那麼當搜尋到後,我們怎麼使用這個音樂檔案呢?當然是根據路徑來播放他,而要播放音樂,自然而然是要用到Android的mediaplayer這個類。 對於mediapl

android Mediaplayer 播放視訊 只有聲音沒有畫面的問題

剛剛解決了 mediaplayer 和SurfaceView播放視訊 只有聲音沒有畫面的問題, 最終確定為,holder.setFixedSize(width,heigh); 設定解析度的方法,放在了 mediaplayer的回撥函式裡,導致沒有畫面, 把這個holder.

Android Mediaplayer播放時設定頻譜

仿網易雲音樂播放時跳躍的頻譜狀態,此案例是根據聲音的大小動態的設定跳動頻率和高度,而網易雲音樂是固定的。 //建立一個展示音波柱的自定義View VisualizerView mVisualizerView = new VisualizerView(); 給

Java 音樂播放器開發學習之——音訊檔案播放

Java Sound API是javaSE平臺提供底層的(low-level)處理聲音介面,可以實現音訊檔案的播放。 其核心包括:   AudioSystem AudioInputStream AudioFormat DataLine.Info S

Android之動態修改system/etc目錄檔案的一種實現方式-SELinux

在沒有root的前提下,system分割槽為只讀,若要動態修改該分割槽下的檔案,可以按照下面流程實現: 1.寫執行指令碼,這裡以修改system/etc/hosts檔案為例,在/device/mediatek/mt67xx目錄下建立名為modifyhosts.sh的檔案,檔

linux下wget如何下載整個網站,或者特定目錄全部檔案

需要下載某個目錄下面的所有檔案。命令如下wget -c -r -np -k -L -p www.xxx.org/pub/path/在下載時。有用到外部域名的圖片或連線。如果需要同時下載就要用-H引數。wget -np -nH -r –span-hosts www.xxx.o

Android簽名與認證META-INFO目錄檔案

一、Android簽名概述 我們已經知道的是:Android對每一個Apk檔案都會進行簽名,在Apk檔案安裝時,系統會對其簽名信息進行比對,判斷程式的完整性,從而決定該Apk檔案是否可以安裝,在一定程度上達到安全的目的。 給定一個Apk檔案,解壓,可以看到一個META

利用pot播放器將視訊的音訊檔案抽離。

    當我們需要將一個視訊的音訊抽離出來的時候,最先想到的就是Au,但這種比較“重”的方法就不適合我這種“懶人”,哈哈。    好了,言歸正傳,現在和大家分享一個比較簡單的辦法。    利用potPlayer這款軟體,軟體地址:連結:https://pan.baidu.co

Android提高第二十篇之MediaPlayer播放網路音訊

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!