Android实现播放音频
来源:互联网 发布:windows gvim配置模板 编辑:程序博客网 时间:2024/05/16 08:17
在Android平台上实现一个播放音频文件还是比较简单的,本文将使用Android权威指南的hellomoon例子来介绍下如何构建播放音频项目。首先新建一个Android项目,本例中使用Android studio为例。在向导结束后,会创建一个默认的activity,将此类 HelloMoonActivity,并修改集成基类 FragmentActivity,创建后并修改代码如下:
package com.example.hehao.hellomoon;import android.support.v4.app.FragmentActivity;import android.os.Bundle;public class HelloMoonActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hello_moon); }}通过这段代码,系统会载入activity_hello_moon布局文件,在这个布局文件中,我们只声名一个fragment,并制定name属性,这个属性实例化的fragment,此布局文件如下:
<?xml version="1.0" encoding="utf-8"?><fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/helloMoonFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.example.hehao.hellomoon.HelloMoonFragment"></fragment>
通过上面的布局文件,可以看出实例化了HelloMoonFragment类,接下来我们来编写此类文件,并创建此文件的布局类,由于要实现播放音频文件,所以布局文件应该有播放和停止按钮,此布局使用TableLayout布局,并使用了一个阿姆斯特朗登月的图片作为背景图片,此布局文件如下:
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:src="@drawable/armstrong_on_moon" android:contentDescription="@string/hellomoon_image_description" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerInside" android:layout_weight="1" /> <TableRow android:gravity="center|bottom" android:layout_weight="0" > <Button android:id="@+id/hellomoon_playButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hellomoon_play" /> <Button android:id="@+id/hellomoon_stopButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hellomoon_stop" /> </TableRow></TableLayout>
下面,需要我们编写相应的fragment类
package com.example.hehao.hellomoon;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;/** * Created by 浩 on 2016/12/26. */public class HelloMoonFragment extends Fragment { private AudioPlayer mPlayer = new AudioPlayer(); private Button mPlayButton; private Button mStopButton; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_hello_moon,container,false); mPlayButton =(Button)v.findViewById(R.id.hellomoon_playButton); mPlayButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { mPlayer.play(getActivity()); } }); mStopButton =(Button)v.findViewById(R.id.hellomoon_stopButton); mStopButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { mPlayer.stop(); } }); return v; } @Override public void onDestroyView() { super.onDestroy(); mPlayer.stop(); }}
此fragment实例类中使用布局文件定义的播放和停止按钮,并添加相应的按钮监听事件,此处不再赘述,此类中使用另外定义的AudioPlayer类,此处贴出:
/** * Created by 浩 on 2016/12/26. */public class AudioPlayer { private MediaPlayer mPlayer; public void stop(){ if(mPlayer!=null){ mPlayer.release(); mPlayer=null; } } public void play(Context c){ stop(); mPlayer = MediaPlayer.create(c,R.raw.one_small_step); mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { stop(); } }); mPlayer.start(); }}
0 0
- Android实现播放音频
- Android音频播放器的实现
- android实现简单音频播放器
- HTML5实现音频播放
- waveout**实现音频播放
- android 音频播放 以及 二维码模块中音频播放和震动(vibrate)的实现
- Android AudioTrack 播放音频
- Android MediaPlayer播放音频
- android:音频播放
- android 音频播放 SoundPool
- android 音频播放--MediaPlayer
- Android SoundPool播放音频
- android 音频播放类
- Android播放音频相关
- Android音频播放方法
- Android中的音频播放
- android音频播放
- Android音频播放讲解
- Android版-支付宝APP支付
- 前端小小小白:HTML是啥?能吃吗?真相在这里,吃货别哭……
- truncate 与 delete的区别
- 进程通信之信号
- Java数据类型转换——数值型
- Android实现播放音频
- 支付宝Wap支付你了解多少?
- ThinkPHP 模版中的内置标签
- @Component,@Service,@Controller,@Repository
- 值得程序猿关注的微信公众号
- 第一周+周三学习笔记
- java之旅之JDBC
- innodb/myisam区别
- Java集合类的使用