MediaPlayerは再生、一時停止、再放送などの機能を実現
27435 ワード
くだらないことは言わないで、直接コードを貼ってください.
主なコード:直接主なファイルの中で机能を书いて、普通はサービスの中で书いて、ここはただDemoをテストします
レイアウトプロファイル:いくつかのButtonを勝手になくしました.
音楽再生ファイル、私がくれたのはjayの「サンゴ海」です
resディレクトリの下にrawフォルダを新規作成し、mp 3ファイルをこのディレクトリの下に置くようにします.ファイル名は「shanhuhai.mp 3」です.
基本的に使えますが、差は多くありません.
転載先:https://www.cnblogs.com/MMLoveMeMM/articles/4360761.html
主なコード:直接主なファイルの中で机能を书いて、普通はサービスの中で书いて、ここはただDemoをテストします
package com.example.androidmediaplayerdemos;
import java.io.IOException;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnSeekCompleteListener;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.content.res.Resources;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener,OnCompletionListener{
private static final String TAG = "Main";
private static boolean isBluetooth = false;
private static MediaPlayer mp = null;
private static MediaPlayer mpn = null;
private static MediaPlayer mpnb = null;
private static AudioManager mAudioManager;
private static AssetFileDescriptor afd;
private static Resources res;
private static int mCurrentVolume;
private static int mCurrentSysVolume;
private Button mStart;
private Button mPause;
private Button mStop;
private Button mRestart;
private Button mSeek;
private Button mInit;
private static Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext=this;
mAudioManager = (AudioManager) this
.getSystemService(Context.AUDIO_SERVICE);
mStart=(Button)findViewById(R.id.player);
mStart.setOnClickListener(this);
mPause=(Button)findViewById(R.id.pause);
mPause.setOnClickListener(this);
mStop=(Button)findViewById(R.id.stop);
mStop.setOnClickListener(this);
mRestart=(Button)findViewById(R.id.restart);
mRestart.setOnClickListener(this);
mSeek=(Button)findViewById(R.id.seek);
mSeek.setOnClickListener(this);
mInit=(Button)findViewById(R.id.init);
mInit.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
// notification
public void InitPlayNotif(Context context, int id) throws IOException {
stopNotif();
mpn = new MediaPlayer();
mAudioManager = (AudioManager) context
.getSystemService(context.AUDIO_SERVICE);
try {
// mpn.setDataSource(context, ringtoneUri);
res = context.getResources();
afd = res.openRawResourceFd(R.raw.shanhuhai);
mpn.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),
afd.getLength());
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
/*
* mAudioManager.setSpeakerphoneOn(false);
mAudioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
mpn.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
mCurrentVolume = mAudioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
*/
Log.i(TAG, "notification volume : " + mCurrentVolume);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 5, 0);
try {
mpn.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
// mpn.start();
mpn.setOnSeekCompleteListener(new OnSeekCompleteListener(){
@Override
public void onSeekComplete(MediaPlayer arg0) {
// TODO Auto-generated method stub
Toast.makeText(mContext, "play completely !", Toast.LENGTH_SHORT).show();
}
});
}
public static void stopNotif() {
try {
if (mpn != null) {
mpn.stop();
mpn.release();
mpn = null;
}
} catch (Exception e) {
}
}
private void startPlayer(){
if(mpn==null){
return;
}
try {
try {
mpn.prepare();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
mpn.start();
}
private void pausePlayer(){
if(mpn==null){
return;
}
mpn.pause();
}
private void restartPlayer(){
if(mpn==null){
return;
}
mpn.start();
}
private void seekPlayer(){
if(mpn==null){
return;
}
mpn.seekTo(1000*60);
mpn.setOnSeekCompleteListener(new OnSeekCompleteListener(){
@Override
public void onSeekComplete(MediaPlayer arg0) {
// TODO Auto-generated method stub
mpn.start();
}
});
}
private void stopPlayer(){
if(mpn==null){
return;
}
stopNotif();
}
private void initPlayer(){
try {
InitPlayNotif(this,0);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
int id=arg0.getId();
switch(id){
case R.id.player:
startPlayer();
break;
case R.id.pause:
pausePlayer();
break;
case R.id.restart:
restartPlayer();
break;
case R.id.stop:
stopPlayer();
break;
case R.id.seek:
seekPlayer();
break;
case R.id.init:
initPlayer();
break;
default :
break;
}
}
@Override
public void onCompletion(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
}
レイアウトプロファイル:いくつかのButtonを勝手になくしました.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/player"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="17dp"
android:layout_marginTop="40dp"
android:text="player" />
<Button
android:id="@+id/pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/player"
android:layout_below="@+id/player"
android:layout_marginTop="18dp"
android:text="pause" />
<Button
android:id="@+id/restart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/pause"
android:layout_centerVertical="true"
android:text="restart" />
<Button
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/restart"
android:layout_below="@+id/restart"
android:layout_marginTop="18dp"
android:text="stop" />
<Button
android:id="@+id/seek"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/stop"
android:layout_alignParentBottom="true"
android:layout_marginBottom="34dp"
android:text="seek 1 min" />
<Button
android:id="@+id/init"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="17dp"
android:layout_toRightOf="@+id/seek"
android:text="init before player everytime" />
RelativeLayout>
音楽再生ファイル、私がくれたのはjayの「サンゴ海」です
resディレクトリの下にrawフォルダを新規作成し、mp 3ファイルをこのディレクトリの下に置くようにします.ファイル名は「shanhuhai.mp 3」です.
基本的に使えますが、差は多くありません.
転載先:https://www.cnblogs.com/MMLoveMeMM/articles/4360761.html