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个之后的接口不能正常使用.
随机推荐
- Autofac Getting Started(默认的构造函数注入)
https://autofaccn.readthedocs.io/en/latest/getting-started/index.html The basic pattern for integrat ...
- MySQL explain 、explain extended用法
explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了,如: explai ...
- skynet之伪取消定时器
1.截至目前群里的成员已经对skynet中的timeout提出了更多的要求.目前skynet提供的定时器是倒计时形式,且定时器一旦设置后,便不能撤销(至少目前的实现是这样),然后调用 cb 最近有人提 ...
- HTML5标签学习
<abbr> 表示一个缩写形式,比如 "Inc."."etc.".通过对缩写词语进行标记,您就能够为浏览器.拼写检查程序.翻译系统以及搜索引擎分度器 ...
- Educational Codeforces Round 23E
题意:刚开始有一个空集合,现在有三种操作1,加x到集合中,2,删去集合中的一个x,3,查询集合中的x^p<l的个数 套路题,(看到异或和集合操作条件反射01字典树),加和删操作不说了,主要是查询 ...
- opencv:通过滑动条调节亮度和对比度
示例代码: #include <opencv.hpp> using namespace cv; using namespace std; void on_change(int, void* ...
- USB转串口WIN8驱动安装
http://jingyan.baidu.com/article/11c17a2c0bb606f446e39da0.html //查看百度经验 http://jingyan.baidu.com/ar ...
- python基础之网络基础
一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...
- LeetCode OJ:Merge Two Sorted Lists(合并两个链表)
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- L126
Like so many things, it is not what's outside, but what is inside that counts. 许多事物都是如此,外表看起來虽不起眼,但是 ...