android中的多媒体应用MediaPlayer
16lz
2021-01-26
MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用MediaPlayer,要视情况选择了。MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceView。SurfaceView比普通的自定义View更有绘图上的优势,它支持完全的OpenGL ES库。
迷你音乐播放器
/Chapter11_Media_MiniPlayer/src/com/amaker/test/MainActivity.java
- 代码
- packagecom.amaker.test;
- importandroid.app.Activity;
- importandroid.app.AlertDialog;
- importandroid.media.MediaPlayer;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.widget.ImageButton;
- publicclassMainActivityextendsActivityimplementsMediaPlayer.OnCompletionListener{
- privateImageButtonplay,pause,stop;
- privateMediaPlayermp;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- play=(ImageButton)findViewById(R.id.play);
- pause=(ImageButton)findViewById(R.id.pause);
- stop=(ImageButton)findViewById(R.id.stop);
- play.setOnClickListener(newView.OnClickListener(){
- publicvoidonClick(Viewview){
- play();
- }
- });
- pause.setOnClickListener(newView.OnClickListener(){
- publicvoidonClick(Viewview){
- pause();
- }
- });
- stop.setOnClickListener(newView.OnClickListener(){
- publicvoidonClick(Viewview){
- stop();
- }
- });
- setup();
- }
- @Override
- publicvoidonDestroy(){
- super.onDestroy();
- if(stop.isEnabled()){
- stop();
- }
- }
- publicvoidonCompletion(MediaPlayermp){
- stop();
- }
- privatevoidplay(){
- mp.start();
- play.setEnabled(false);
- pause.setEnabled(true);
- stop.setEnabled(true);
- }
- privatevoidstop(){
- mp.stop();
- pause.setEnabled(false);
- stop.setEnabled(false);
- try{
- mp.prepare();
- mp.seekTo(0);
- play.setEnabled(true);
- }
- catch(Throwablet){
- error(t);
- }
- }
- privatevoidpause(){
- mp.pause();
- play.setEnabled(true);
- pause.setEnabled(false);
- stop.setEnabled(true);
- }
- privatevoidloadClip(){
- try{
- mp=MediaPlayer.create(this,R.raw.test);
- mp.setOnCompletionListener(this);
- }
- catch(Throwablet){
- error(t);
- }
- }
- privatevoidsetup(){
- loadClip();
- play.setEnabled(true);
- pause.setEnabled(false);
- stop.setEnabled(false);
- }
- privatevoiderror(Throwablet){
- AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
- builder
- .setTitle("报错啦!")
- .setMessage(t.toString())
- .setPositiveButton("确定",null)
- .show();
- }
- }
/Chapter11_Media_MiniPlayer/res/layout/main.xml
- 代码
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="迷你音乐播放器"/>
- <LinearLayout
- android:orientation="horizontal"android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <ImageButton
- android:id="@+id/play"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/play"
- />
- <ImageButton
- android:id="@+id/pause"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/pause"
- />
- <ImageButton
- android:id="@+id/stop"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/stop"
- />
- </LinearLayout>
- </LinearLayout>
/Chapter11_Media_MiniPlayer/AndroidManifest.xml
- 代码
- <?xmlversion="1.0"encoding="utf-8"?>
- <manifestxmlns:android="http://schemas.android.com/apk/res/android"
- package="com.amaker.test"
- android:versionCode="1"
- android:versionName="1.0">
- <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
- <activityandroid:name=".MainActivity"
- android:label="@string/app_name">
- <intent-filter>
- <actionandroid:name="android.intent.action.MAIN"/>
- <categoryandroid:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
- </application>
- <uses-sdkandroid:minSdkVersion="3"/>
- </manifest>
更多相关文章
- Android进行单元测试难在哪-part4
- 基于eclipse的android项目实战—博学谷(十 八)关于视频播放问题
- android中WebView和javascript实现数据交互实例
- NDK Android* 应用移植方法 APP_ABI := armeabi armeabi-v7a x86
- Android代码性能优化技巧 (一)
- 关于WebVeiw的例子(一)
- 2012传智播客黑马程序员内部视频
- 【ArcGIS for Android】使用自定义Callout显示地图信息
- android studio 查找替换