Android AudioManager 音频管理

news/2024/7/5 6:08:55

这里写图片描述

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="shortcut.song.com.myapplication.AudioTestActivity">

    <Button
        android:id="@+id/audio_play"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="play"/>
    <Button
        android:id="@+id/vol_up"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="V+"/>
    <Button
        android:id="@+id/vol_down"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="V-"/>
    <ToggleButton
        android:id="@+id/mute"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
package shortcut.song.com.myapplication;

import android.app.Service;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ToggleButton;

public class AudioTestActivity extends AppCompatActivity {

    Button play,up,down;
    ToggleButton mute;
    AudioManager audioManager;
    MediaPlayer mediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_audio_test);
        audioManager = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
        play = (Button)findViewById(R.id.audio_play);
        up = (Button)findViewById(R.id.vol_up);
        down = (Button)findViewById(R.id.vol_down);
        mute = (ToggleButton)findViewById(R.id.mute);

        play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 初始化MediaPlay对象,准备播放音乐
                mediaPlayer = MediaPlayer.create(AudioTestActivity.this, R.raw.boot);
                // 设置循环
                mediaPlayer.setLooping(true);
                // 开始播放
                mediaPlayer.start();
            }
        });

        up.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 指定调节乐音频,音量增大,显示图形意图
                audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
            }
        });

        down.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 指定调节乐音频,音量减小,显示图形意图
                audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
            }
        });

        mute.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // 根据isChecked设置静音
                audioManager.setStreamMute(AudioManager.STREAM_MUSIC, isChecked);
            }
        });

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mediaPlayer.stop();
    }
}

http://www.niftyadmin.cn/n/4308587.html

相关文章

.NET平台开源项目速览(12)哈希算法集合类库HashLib

.NET的System.Security.Cryptography命名空间本身是提供加密服务&#xff0c;散列函数&#xff0c;对称与非对称加密算法等功能。实际上&#xff0c;大部分情况下已经满足了需求&#xff0c;而且.NET实现的都是目前国际上比较权威的&#xff0c;标准化的算法&#xff0c;所以还…

BZOJ 1004 【HNOI2008】 Cards

题目链接&#xff1a;Cards 听说这道题是染色问题的入门题&#xff0c;于是就去学了一下\(Burnside\)引理和\(P\acute{o}lya\)定理(其实还是没有懂)&#xff0c;回来写这道题。 由于题目中保证"任意多次洗牌都可用这\(m\)种洗牌法中的一种代替"&#xff0c;于是有了封…

.NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍

Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来。因为AForge.NET更注重与一些底层和广度&#xff0c;而Accord.NET Framework更注重与机器学习算法以及提供计算机视频、音频、信号处理以及统计应用相关的解决方案。该项目使用C#语言编写&#xff0c;项目…

Node.js 自学之旅(初稿篇)

学习基础,JQuery 原生JS有一定基础,有自己一定技术认知(ps:原型链依然迷糊中.闭包6不起来!哎!) 当然最好有语言基础,C#,java,PHP等等.. 最初学习这个东西的原因很简单,在园子里面看到一篇关于node编写的小爬虫 的文章,没想到这个可以做一些服务自己的东西而不是公司那些服务用户…

C语言 · 回文数 · 基础练习

问题描述1221是一个非常特殊的数&#xff0c;它从左边读和从右边读是一样的&#xff0c;编程求所有这样的四位十进制数。输出格式按从小到大的顺序输出满足条件的四位十进制数。代码如下&#xff1a;注意&#xff1a;这里要提醒一下读者&#xff1a;蓝桥杯都是在线提交&#xf…

python PIL比较图片像素

1 # -*- coding: utf-8 -*-2 3 from PIL import Image4 from pylab import *5 6 def compare_pic_L(pic1,pic2):7 #打开第一张图片8 im1 Image.open(pic1).convert(L)9 print im1.format ,im1.size, im1.mode 10 11 #像素值转数组 12 aim1 np.trans…

【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法...

若干年前读研的时候&#xff0c;学院有一个教授&#xff0c;专门做群蚁算法的&#xff0c;很厉害&#xff0c;偶尔了解了一点点。感觉也是生物智能的一个体现&#xff0c;和遗传算法、神经网络有异曲同工之妙。只不过当时没有实际需求学习&#xff0c;所以没去研究。最近有一个…

《DSP using MATLAB》示例Example6.1

今天是2016年最后一天了&#xff0c;看到其他博友都写年终总结&#xff0c;做了这个&#xff0c;做了那个&#xff0c;收获满满&#xff0c;再看看自己&#xff0c; 恍恍惚惚一年&#xff0c;不知道干了些什么&#xff0c;惭愧。刚才接到老妈远方的电话&#xff0c;弟弟就在一小…