android中MediaPlayer类的用法
用法直接看sample
package com.turtle920.androidaudioprocess; import android.media.MediaPlayer;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button; import java.io.IOException; public class MainActivity extends AppCompatActivity { MediaPlayer mp = new MediaPlayer();
float leftVol=0.5f, rightVol=0.5f;
String song = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Music/tf.mp3"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); try {
mp.setDataSource(song);
mp.prepare();
mp.setVolume(leftVol,rightVol);
} catch (Exception e) {
Log.e("DEBUG", "" + e.toString());
e.printStackTrace();
} Button button1 = (Button) findViewById(R.id.button_start);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.start();
}
}); Button button2 = (Button) findViewById(R.id.button_pause);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.pause();
}
}); Button button3 = (Button) findViewById(R.id.button_replay);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.stop();
try {
mp.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}
}); Button button4 = (Button)findViewById(R.id.button_l);
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (leftVol+0.05f<=1.0f) leftVol+=0.05f;
if (rightVol-0.05f>=0f) rightVol-=0.05f;
Log.e("DEBUG",""+leftVol+" "+rightVol);
mp.setVolume(leftVol, rightVol);
}
}); Button button5 = (Button)findViewById(R.id.button_r);
button5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (leftVol-0.05f>=0f) leftVol-=0.05f;
if (rightVol+0.05f<=1.0f) rightVol+=0.05f;
Log.e("DEBUG",""+leftVol+" "+rightVol);
mp.setVolume(leftVol, rightVol);
}
}); }
}
注意要在manifest里申明权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
另外如果真机环境API 23+ 还需要在机子上给app读取SD卡得权限
android中MediaPlayer类的用法的更多相关文章
- android中Handle类的用法
android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...
- [转]Android中Application类的用法
原文链接:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application ...
- Android中Calendar类的用法总结
Calendar是Android开发中需要获取时间时必不可少的一个工具类,通过这个类可以获得的时间信息还是很丰富的,下面做一个总结,以后使用的时候就不用总是去翻书或者查资料了. 在获取时间之前要先获得 ...
- android中PreferenceScreen类的用法
PreferenceScreen preference是偏好,首选的意思,PreferenceScreen个人翻译成 “偏好显示”,明白这个意思就好,就是说根据特点灵活的定义显示内容风格,一个屏幕可以 ...
- 三、android中Handle类的用法
当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉.Ha ...
- Android中Cursor类的概念和用法[转]
首页 > 程序开发 > 移动开发 > Android > 正文 Android中Cursor类的概念和用法 2011-09-07 0个评论 收藏 ...
- Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法
Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...
- C#中timer类的用法
C#中timer类的用法 关于C#中timer类 在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类 ...
- Android中一个类实现的接口数不能超过七个
近期一段时间,在开发Android应用程序的过程中,发现Android中一个类实现的接口数超过七个的时候,常常会出现超过第7个之后的接口不能正常使用.
随机推荐
- Luogu-5004 专心OI-跳房子(矩阵快速幂)
Luogu-5004 专心OI-跳房子(矩阵快速幂) 题目链接 题解: 先考虑最朴素的dp 设\(f[i][0/1]\)表示第\(i\)个位置跳/不跳的方案数,则: \[ \begin{cases} ...
- RDP 协议组件 X.224 在协议流中发现一个错误并且中断了客户端连接
如果你的服务器有如下错误: “RDP 协议组件 X.224 在协议流中发现一个错误并且中断了客户端连接.” 可能的有2种: 1:你试试能否能继续远程登陆,有可能你的远程登陆组件出现问题. 2:有人攻击 ...
- Spring -- aop(面向切面编程),前置&后置&环绕&抛异常通知,引入通知,自动代理
1.概要 aop:面向方面编程.不改变源代码,还为类增加新的功能.(代理) 切面:实现的交叉功能. 通知:切面的实际实现(通知要做什么,怎么做). 连接点:应用程序执行过程期间,可以插入切面的地点. ...
- scala学习手记39 - 模式匹配
在java中有switch/case这样的模式匹配语句,可以匹配的类型包括int,byte,char,short, enum,在java8又支持了字符串. 在scala中也有类似的模式匹配语句,即ma ...
- OpenStack Ceilometer -- 后台数据存储优化之MongoDB的分片存储设置
https://xiaofandh12.github.io/Mongo-Shard 关于MongoDB MongoDB中的概念与关系型数据库之间的对应: Database --> Databas ...
- React菜鸟食谱
JSX 用小括号包裹代码防止分号自动插入的bug,用大括号包裹里面的表达式 切记你使用了大括号包裹的 JavaScript 表达式时就不要再到外面套引号了.JSX 会将引号当中的内容识别为字符串而不是 ...
- Build_Release.bat
Build_Release.bat @echo off pushd "%~dp0" set tag=Release set PATH="C:\Program Files ...
- 26-THREE.JS 虚线绘制线框样式几何图形的材质
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- opencv:图像模糊处理
接口: blur(sourceImage,dstImage,Size(,)); // 图像模糊处理 示例代码: #include <opencv.hpp> #include <img ...
- CSS如何设置字体的类型、大小、颜色
设计网页时,一般设置body的字体,让其他标签继承body的字体,这样设置特别方便,但是标题标签h1到h6和表单标签(input类型)是没有继承body的字体属性的,它们的字体需要单独设置. < ...