1. ホーム

アンドロイド開発(21)ビープ音とバイブレーション警告の実装。

2022-02-28 02:08:40

最近、zxingプロジェクトを読んでいて、いろいろと勉強になりました。皆さんもぜひ読んでみてください。BeepManagerクラスがあり、ビープ音とバイブレーションの実装がされています。彼がどのようにやっているのか見てみましょう。

ビープ音

1. オーディオファイル(例:beep.ogg)を用意します。ogg形式は音声圧縮形式の一種で、このようなmp3と似たようなものです。これを用意し、再生するとビープ音が鳴る。
2. アクティビティに登録されているデフォルトのオーディオチャンネルです。

 activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);

ここでSTREAM_MUSICと宣言されているチャンネルがマルチメディア再生で、これを登録した後、携帯電話のボリュームレベルボタンで再生の音量を調整することができます。

   このチャンネルを設定しない場合、我々のアクティビティのデフォルトの音量ボタンの処理は、携帯電話の着信音の音量に作用します。

3. 現在の着信音モードを確認する、またはシナリオモードになる。

説明:getRingerMode()・・・現在の着信モードを返す。例:RINGER_MODE_NORMAL(通常)、RINGER_MODE_SILENT(無音)、RINGER_MODE_VIBRATE(バイブレーション)。

// 現在のモードがRingingモードの場合、SilentまたはVibrateモードであれば、次のBeep Beep操作の準備を続ける。続けてはいけません。ユーザがサイレントモードを選択しているため、こちらも音を鳴らしません。

AudioManager audioService = (AudioManager) アクティビティ
.getSystemService(Context.AUDIO_SERVICE);
if (audioService.getRingerMode() !) = AudioManager.RINGER_MODE_NORMAL) { { (オーディオサービス.getRINGERMODE() ! <未定義
shouldPlayBeep = falseです。
}

4. Initialize the MediaPlayer object, specifying the sound channel to be played as STREAM_MUSIC, which points to the same channel as in the above steps.

MediaPlayer mediaPlayer = new MediaPlayer()。
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)を設定します。

イベントを登録します。再生が一度終了すると、ストリームファイルの先頭にリダイレクトし、次の再生に備えます。

// ビープの再生が終了したら、巻き戻して次のビープをキューに入れる。

メディアプレイヤー
.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {) <未定義
オーバーライド
public void onCompletion(MediaPlayer player) {... <未定義
player.seekTo(0);
}
});

データソースを設定し、再生の準備をする

AssetFileDescriptor file = activity.getResources().openRawResourceFd()
R.raw.beep)です。
トライ { <未定義
mediaPlayer.setDataSource(file.getFileDescriptor(),
file.getStartOffset(), file.getLength()) を参照)。
file.close()を実行します。
mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME)を実行します。
mediaPlayer.prepare()を実行します。
} catch (IOException ioe) {... <未定義
Log.w(TAG、ioe)。
mediaPlayer = nullです。
}
return mediaPlayer;

5. 再生開始

if (playBeep && mediaPlayer ! = null) {. <未定義
mediaPlayer.start()を実行します。
}

-----------------------------------------------------------------

バイブレーション

こちらは比較的簡単です。2つのステップで。

1. パーミッションの宣言

AndroidManifest.xmlに書き込む

<uses-permission android:name="android.permission.VIBRATE"/>

2. バイブレーションサービスを取得します。

バイブレーター vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE).Vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);

3. バイブレーターを起動します。

vibrator.vibrate(VIBRATE_DURATION)を実行します。

    public void playBeepSoundAndVibrate() {
        if (enableVibrate) {
            Vibrator vibrator = (Vibrator) activity
                    .getSystemService(Context.VIBRATOR_SERVICE);
            //vibrate once
            vibrator.vibrate(VIBRATE_DURATION);
            //The first parameter, which refers to an array of vibrating frequencies. The first of each group is the waiting time, and the second is the vibration time.
            // For example, [2000,500,100,400], will wait 2000 milliseconds for 500 vibrations, and then wait 100 for 400 vibrations.
            // The second parameter, repest, refers to the position of the first index (the first array parameter) from which the vibration cycle starts.
            //It will keep on looping, we need to use vibrator.cancel() to actively terminate it
            //vibrator.vibrate(new long[]{300,500},0);
            
        }
    }

ソースコードのアップロードができなくなりました

参考にしてください。 http://www.linuxidc.com/Linux/2011-08/41276.htm

http://www.linuxidc.com/Linux/2012-04/57903.htm

http://blog.csdn.net/barnett_zhubo/article/details/6731659

http://www.cnblogs.com/j-turn/archive/2012/09/18/2690534.html

このコードは、zxingオープンソースプロジェクトを参照しています。


<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"& gt;</script>