android播放多媒体,Android—多媒體(音頻播放)

思維導圖

f4a1e61990c81db0fe5034bdff6d857d.png

音頻效果圖:

7af747308fda5901aa4cdc4934931fb8.png            

574c50e968cc767b4d5f909842b7c640.png

音頻布局文件:

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="com.example.android27_palymusic.MainActivity">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/seekbar"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@android:drawable/ic_media_play"

android:onClick="PlayOrPause"

/>

一、應用程序內音頻播放

package com.example.android27_palymusic;

import android.media.MediaPlayer;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageButton;

import android.widget.SeekBar;

public class MainActivity extends AppCompatActivity {

private SeekBar seekbar;

private MediaPlayer mediaPlayer;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

seekbar = (SeekBar) findViewById(R.id.seekbar);

//給進度條設置滑動監聽事件

seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

//獲取當前進度條的位置

int currentPosition=seekBar.getProgress();

//跳轉到某個位置進行播放

mediaPlayer.seekTo(currentPosition);

}

});

}

public void PlayOrPause(View view){

ImageButton imageButton= (ImageButton) view;

if(mediaPlayer==null){ //判斷是否是第一次進來

//應用內音頻源

mediaPlayer = MediaPlayer.create(this, R.raw.a1);

//獲取音樂的最大時長

int time=mediaPlayer.getDuration();

//設置進度條的最大值為音樂播放時長

seekbar.setMax(time);

//調取開始播放

mediaPlayer.start();

//換上暫停圖標

imageButton.setImageResource(android.R.drawable.ic_media_pause);

//調取線程

new MyThead().start();

}else if(mediaPlayer.isPlaying()){ //判斷是否正在播放

//調取暫停播放

mediaPlayer.pause();

//換上開始播放圖標

imageButton.setImageResource(android.R.drawable.ic_media_play);

}else {

mediaPlayer.start();

imageButton.setImageResource(android.R.drawable.ic_media_pause);

}

}

class MyThead extends Thread{

@Override

public void run() {

super.run();

while (seekbar.getProgress()

//獲取音樂當前播放位置

int currentPosition=mediaPlayer.getCurrentPosition();

seekbar.setProgress(currentPosition);

}

}

}

}

二、SD卡音頻播放

package com.example.android27_palymusic;

import android.media.AudioManager;

import android.media.MediaPlayer;

import android.net.Uri;

import android.os.Environment;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageButton;

import android.widget.SeekBar;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

private SeekBar seekbar;

private MediaPlayer mediaPlayer;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

seekbar = (SeekBar) findViewById(R.id.seekbar);

//給進度條設置滑動監聽事件

seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

//獲取當前進度條的位置

int currentPosition=seekBar.getProgress();

//跳轉到某個位置進行播放

mediaPlayer.seekTo(currentPosition);

}

});

}

public void PlayOrPause(View view) throws IOException {

ImageButton imageButton= (ImageButton) view;

if(mediaPlayer==null){ //判斷是否是第一次進來

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ //判斷內存卡是否可用

String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath(); //獲取路徑

mediaPlayer=new MediaPlayer();

//設置音頻流的類型

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

//設置SD卡音頻源

mediaPlayer.setDataSource(this, Uri.parse("file://"+sdPath+"/1473071258817.mp3"));

//設置異步准備

mediaPlayer.prepare();

//獲取音樂的最大時長

int time=mediaPlayer.getDuration();

//設置進度條的最大值為音樂播放時長

seekbar.setMax(time);

//調取開始播放

mediaPlayer.start();

//換上暫停圖標

imageButton.setImageResource(android.R.drawable.ic_media_pause);

//調取線程

new MyThead().start();

}

}else if(mediaPlayer.isPlaying()){ //判斷是否正在播放

//調取暫停播放

mediaPlayer.pause();

//換上開始播放圖標

imageButton.setImageResource(android.R.drawable.ic_media_play);

}else {

mediaPlayer.start();

imageButton.setImageResource(android.R.drawable.ic_media_pause);

}

}

class MyThead extends Thread{

@Override

public void run() {

super.run();

while (seekbar.getProgress()

//獲取音樂當前播放位置

int currentPosition=mediaPlayer.getCurrentPosition();

seekbar.setProgress(currentPosition);

}

}

}

}

三、網絡音頻播放

package com.example.android27_palymusic;

import android.media.AudioManager;

import android.media.MediaPlayer;

import android.net.Uri;

import android.os.Environment;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageButton;

import android.widget.SeekBar;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

private SeekBar seekbar;

private MediaPlayer mediaPlayer;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

seekbar = (SeekBar) findViewById(R.id.seekbar);

//給進度條設置滑動監聽事件

seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

//獲取當前進度條的位置

int currentPosition=seekBar.getProgress();

//跳轉到某個位置進行播放

mediaPlayer.seekTo(currentPosition);

}

});

}

public void PlayOrPause(View view) throws IOException {

final ImageButton imageButton= (ImageButton) view;

if(mediaPlayer==null){ //判斷是否是第一次進來

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();

mediaPlayer=new MediaPlayer();

//設置音頻流的類型

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

//設置網絡音源

mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.210:8080/s8.mp3"));

mediaPlayer.prepareAsync();

//設置准備監聽

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mediaPlayer) {

//獲取音樂的最大時長

int time=mediaPlayer.getDuration();

//設置進度條的最大值為音樂播放時長

seekbar.setMax(time);

//調取開始播放

mediaPlayer.start();

//換上暫停圖標

imageButton.setImageResource(android.R.drawable.ic_media_pause);

//調取線程

new MyThead().start();

}

});

}

}else if(mediaPlayer.isPlaying()){ //判斷是否正在播放

//調取暫停播放

mediaPlayer.pause();

//換上開始播放圖標

imageButton.setImageResource(android.R.drawable.ic_media_play);

}else {

mediaPlayer.start();

imageButton.setImageResource(android.R.drawable.ic_media_pause);

}

}

class MyThead extends Thread{

@Override

public void run() {

super.run();

while (seekbar.getProgress()

//獲取音樂當前播放位置

int currentPosition=mediaPlayer.getCurrentPosition();

seekbar.setProgress(currentPosition);

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值