Android学习之SeekBar(控制wav音频的声音)
使用SeekBar调节声音
SeekBar控件其实就是一个高级点的进度条,就像我们在听歌,看电影用的播放器上的进度条一样,是可以拖动的,可以改变进度的一个进度条控件!
SeekBar常用属性:
android:max[integer]//设置拖动条的最大值
android:progress[integer]//设置当前的进度值
android:secondaryProgress[integer]//设置第二进度,通常用做显示视频等的缓冲效果
android:thumb[drawable]//设置滑块的图样
android:progressDrawable[drawable]//设置进度条的图样
1.XML代码:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="SeekBar声音控制" />
- <SeekBar
- android:id="@+id/seekbar"
- android:layout_width="620px"
- android:layout_height="wrap_content"
- android:max="100"
- android:progress="20"
- android:progressDrawable="@drawable/soundbar"
- android:thumb="@drawable/soundbutton" />
- <TextView
- android:id="@+id/txtProgress"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
- <Button
- android:id="@+id/btnStart"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="播放" >
- </Button>
- </LinearLayout>
2.java代码:
- package com.example.seekbar;
- import java.io.File;
- import java.io.IOException;
- import android.app.Activity;
- import android.content.Context;
- import android.media.AudioManager;
- import android.media.MediaPlayer;
- import android.os.Bundle;
- import android.os.Environment;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.SeekBar;
- import android.widget.SeekBar.OnSeekBarChangeListener;
- import android.widget.TextView;
- public class MainActivity extends Activity implements OnClickListener,
- OnSeekBarChangeListener {
- // 定义一个SeekBar和一个TextView
- private SeekBar seekBar;
- private TextView textView;
- private Button btn;
- private MediaPlayer mMediaPlayer;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- /** 创建MediaPlayer对象 **/
- mMediaPlayer = new MediaPlayer();
- initView();
- }
- // 初始化
- private void initView() {
- textView = (TextView) findViewById(R.id.txtProgress);
- seekBar = (SeekBar) findViewById(R.id.seekbar);
- btn = (Button) findViewById(R.id.btnStart);
- seekBar.setMax(100);
- seekBar.setOnSeekBarChangeListener(this);
- btn.setOnClickListener(this);
- }
- private void play() throws IOException {
- // 获取文件路径 ,放在SD卡下
- File audioFile = new File(Environment.getExternalStorageDirectory(),
- "welcome.wav");
- Log.i("PATH", audioFile.getAbsolutePath());
- mMediaPlayer.reset();
- mMediaPlayer.setDataSource(audioFile.getAbsolutePath());
- mMediaPlayer.prepare();
- mMediaPlayer.start();
- mMediaPlayer.setVolume(1f, 2f);
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
- || keyCode == KeyEvent.KEYCODE_1) {
- AudioManager audioMa = (AudioManager) MainActivity.this
- .getSystemService(Context.AUDIO_SERVICE);
- audioMa.adjustStreamVolume(AudioManager.STREAM_MUSIC,
- AudioManager.ADJUST_LOWER,
- AudioManager.FX_FOCUS_NAVIGATION_UP);
- } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP
- || keyCode == KeyEvent.KEYCODE_2) {
- AudioManager audioMa = (AudioManager) MainActivity.this
- .getSystemService(Context.AUDIO_SERVICE);
- audioMa.adjustStreamVolume(AudioManager.STREAM_MUSIC,
- AudioManager.ADJUST_RAISE,
- AudioManager.FX_FOCUS_NAVIGATION_UP);
- }
- return true;
- }
- @Override
- public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
- int i = seekBar.getProgress();
- textView.setText("" + i);
- }
- @Override
- public void onStartTrackingTouch(SeekBar arg0) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onStopTrackingTouch(SeekBar arg0) {
- int i = seekBar.getProgress();
- mMediaPlayer.setVolume(i / 100f, i / 100f);
- }
- @Override
- public void onClick(View v) {
- if (v.getId() == R.id.btnStart) {
- try {
- mMediaPlayer.prepare();
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- // 播放音效
- if (!mMediaPlayer.isPlaying()) {
- play();
- } else {
- mMediaPlayer.stop();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
Android学习之SeekBar(控制wav音频的声音)的更多相关文章
- [Android学习笔记]SeekBar的使用
一.SeekBar滑动条的使用 xml声明: <SeekBar android:id="@+id/seekbar" android:layout_width="20 ...
- Android学习:代码控制UI界面示例
package allegro.test2; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; im ...
- Android 学习笔记多媒体技术之 AsyncTask+实现音频播放...
PS:今天搞了一下如何实现音频播放...结果被坑了,看书上写的代码是挺简单的,但是有个函数就是死活没看懂,这真是受不了...最后才弄明白,原来是一个实现异步任务的一个类...这个类使用java.uti ...
- android学习SeekBar的使用
SeekBar介绍听歌的时候,我们常常想快进或者快退到某一时间段,听歌的时候我们控制音量大小听歌,SeekBar可以通过滑块的位置来标示数值,而且拖动条允许用户拖动滑块来改变进度条的大小 SeekBa ...
- 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout
目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...
- 【转】Pro Android学习笔记(二三):用户界面和控制(11):其他控件
目录(?)[-] Chronometer计时器控件 倒计时CountDownTimer Switch控件 Space控件 其他控件 Android提供了很多控件,基本上都是view的扩展. Chron ...
- 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter
目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...
- 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView
目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...
- 【转】Pro Android学习笔记(十三):用户界面和控制(1):UI开发
目录(?)[-] UI开发 方式一通过XML文件 方式二通过代码 方式三XML代码 UI开发 先理清一些UI概念: view.widget.control:这三个名词其实没有什么区别,都是一个UI元素 ...
随机推荐
- Eclipse初次java开发问题总结-2
今天对之前写的servlet程序做了个简单的性能测试发现了一些问题,经过解决这些问题没有再重现,有些问题自己确切知道原因,有的则不太确定. 1.配置文件读取问题 项目中使用.properties作为配 ...
- Linux入门教程:如何检查Linux系统的最后重启时间
问题: 是否有一个命令可以快速地检查系统已经运行了多久? 也就是我怎么知道Linux系统最后的重启时间? 有许多方法来查询系统最后的重启时间. 方法一 第一种方法是使用last命令. $ last r ...
- 非常酷的jQuery/HTML5图片滑块特效 带弹性菜单
新的一周刚刚开始,当我迷迷糊糊坐在办公桌前时,又不自主的去看了一些jQuery和HTML5的应用插件,今天我们来看一款非常酷的jQuery/HTML5图片滑块特效,这款插件的特点是图片上不错的弹性菜单 ...
- CSS3和jQuery实现的自定义美化Checkbox和Radiobox
现在经常可以在网络上看到一些非常奇特的表单元素,例如Checkbox复选框和Radiobox单选框,浏览器默认的样式确实是太丑了,而且更让人蛋疼的是各个浏览器的样式还不统一,考虑到现在越来越多的用户使 ...
- js判断字符串是否json格式
function isJSON(str) { if (typeof str == 'string') { try { var obj=JSON.parse(str); if(typeof obj == ...
- 关于xml里的encoding
创建一个xml时 如果<?xml version="1.0" encoding="GB2312" ?>更改encoding的值为UTF-8,保存后 ...
- spark LinearRegression 预测缺失字段的值
最近在做金融科技建模的时候,字段里面很多缺少值得时候,模型对于新用户的预测会出现很大的不稳定,即PSI较大的情况. 虽然我们依据字段IV值得大小不断的在调整字段且开发新变量,但是很多IV值很大的字段直 ...
- SVN自动生成版本号信息
在平时的多版本开发过程中,需要通过版本号来定位到源码版本,便于定位问题.常规工程实践是设置版本号为X.Y.Z.N,一般X表示主版本号,Y表示子版本号,我一般将Z设为0,N为本次提交的SVN版本 ...
- struts实现国际化
上篇博客学习了Java国际化的一些基础知识,了解了这些知识之后,我们可以更好的过度到struts国际化. 本篇博客主要学习struts国际化的实现: 1.配置环境设置baseName. 在struts ...
- WWDC 2015大会到来了
WWDC 2015大会到来了,观看到凌晨3点,困死了. 从现场直播视频可以看到: (1)iOS 9的新体验:Siri更智能.Search更全面.苹果支付更方便.Notes和News更新颖好用.地图应用 ...