天天看點

【GT-Android開發之音量調節】

前言:大多數的視訊播放軟體,上下滑動都可以實作螢幕亮度和音量大小的調節。這一功能的實作主要涉及安卓的手勢檢測與系統服務兩個技術點,在這篇文章中主要講解如何利用系統服務實作音量大小的調節,手勢檢測會在後期的文章中涉及。

   第一步,界面設計

    由于本文隻是大緻講解音量調節大小的實作,界面就不做美化了,直接使用安卓系統控件兩個Button,分别用于音量的增加與減小,代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin" >

    <Button

        android:layout_width="match_parent" 

        android:layout_height="wrap_content"

        android:clickable="true"

        android:onClick="audioUp"

        android:text="調大" />

    <Button

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:clickable="true"

        android:onClick="audioDown"

        android:text="調小 />

</LinearLayout>

    第二步,定義方法

    從上面的界面布局代碼中可以看到兩個Button的點選事件分别是audioUp與audioDown,是以需要在Java代碼中定義這兩個方法,代碼如下:

public void audioUp(View view) {

boolean bool = AudioUtil.audioUp(this);

if(bool){

                        toastShort(“調節成功”);

                }else{

                        toastShort("已經是最大音量");

                }

}

public void audioDown(View view) {

boolean bool = AudioUtil.audioDown(this);

                if(bool){

                        toastShort(“調節成功”);

                }else{

                        toastShort("已經是最小音量");

                }

}

    第三步,實作AudioUtil,并實作相應的邏輯

    AudioUtil代碼如下:

import android.app.Activity;

import android.content.Context;

import android.media.AudioManager;

public class AudioUtil {

public static boolean audioUp(Activity act) {

return audioDo(1, act);

}

public static boolean audioDown(Activity act) {

return audioDo(0, act);

}

private static boolean audioDo(int flag, Activity act) {

AudioManager mAudioManager = (AudioManager) act.getSystemService(Context.AUDIO_SERVICE);

int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

if (flag == 0) {

if (currentVolume == 0) {

return false;

}

mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FX_FOCUS_NAVIGATION_UP);

return true;

} else {

if (currentVolume == maxVolume) {

return false;

}

mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FX_FOCUS_NAVIGATION_UP);

return true;

}

}

}

    第四步,測試完美收工

繼續閱讀