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元素 ...
随机推荐
- MongoDB C Driver Building on CentOS
Building on Unix Prerequisites OpenSSL is required for authentication or for SSL connections to Mong ...
- 安卓横竖屏切换时activity的生命周期
关于Activity横竖屏切换的声明周期变化: 1.新建一个Activity并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate-->onStart-->on ...
- mvn archetype:generate 创建Maven项目
mvn archetype:generate 创建Maven项目 mvn compile 编译源代码 mvn deploy 发布项目 mvn test-compile 编译测试源代码 mvn test ...
- Swing文本域的编辑
1..setEditable(false); 设置文本域不可编辑 2..setHorizontalAlignment(JTextField.CENTER); // 设置文本的水平对齐方式 有效值包括: ...
- python_django_sae入口配置
--index.wsgi import sys import os.path os.environ['DJANGO_SETTINGS_MODULE'] = 'APPNAME.settings' sys ...
- linux 系统安装配置 zabbix服务(源码安装)
简介: zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定 ...
- RNAcentral 数据库简介
RNAcentral 是EBI 开发的一个非编码RNA的数据库. 网址如下: http://rnacentral.org/ RNAcentral 整合了包括 Ensembl, GENCODE,Gree ...
- asp.net gridview实现正在加载效果方案一AJAX(转)
前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.as ...
- SQL随机生成6位数字
SELECT RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 6)
- linux系统负载
系统负载System Load:系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度 平均负载(Load Average):一段时间内系统的平均负载,这个一段时间一般取1分钟.5分钟.15分钟 查 ...