Androidアプリケーション開発 - ビープ音とバイブレーションによる警告の実装
参考文献
http://blog.csdn.net/dyllove98/article/details/8799249
<スパン 主な記事
今日は、振動による警告と音による警告が必要なアプリケーションを作りました。ネットで情報を探したところ、基本的な内容は合っているのですが、あまり詳しく書かれていない部分もあったので、参考までに記録しておきます。
1. バイブレーション
<スパン まずは簡単なものから。
最初のステップでは AndroidManifest.xml でパーミッションを宣言します。
<uses-permissionandroid:name="android.permission.VIBRATE"/>
ステップ2、バイブレーションサービスを取得し、起動する
バイブレータ vibrator = (Vibrator)activity.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(newlong[]{300,500},0)を実行します。
以上の2つのステップを経て、振動が開始されます。上記のコードは、プログラムの中で直接呼び出すことができます。これは比較的簡単で、冷蔵庫に象を入れるより一手間省けます。 バイブレート() <スパン これの引数はネットで調べられるので、ちょっと見てみてください。
<スパン 2. キューの鳴動
最初のステップでは 1. などの音声ファイルを用意する。 beep.ogg . まず、このオーディオファイルを res/raw フォルダに保存し、このファイルの下のファイル名は小文字でなければならないことに注意して、インポートしてください。
2つ目のステップは、新しいファイルを アクティビティ をデフォルトのオーディオチャンネルとして登録しました。これは通常 onCreate() 関数を使用します。
activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);
3番目のステップは、現在のプロファイルモードを確認し、ミュートされていないことを確認することです。
ステップ4、初期化 メディアプレイヤー オブジェクトを作成し、再生するサウンドチャンネルを STREAM_MUSIC で、上の手順と同じチャンネルを指しています。
MediaPlayer mediaPlayer = new MediaPlayer();//メディアプレイヤー こちらはメンバ関数として定義しました
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
5つ目のステップは、イベントの登録です。一度再生が終了したら、ストリームファイルの先頭を指し直し、次の再生に備えます。
mediaPlayer .setOnCompletionListener(newMediaPlayer.OnCompletionListener() {) <未定義
オーバーライド
public voidonCompletion(MediaPlayer player) {... <未定義
player.seekTo(0);
}
});
ステップ6、データソースを設定し、再生の準備をする
AssetFileDescriptor file = activity.getResources().openRawResourceFd()
R.raw.beep)です。
try{ <未定義
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です。
}
ステップ7、再生開始
mediaPlayer.start()を実行します。
<スパン 以上の手順で、携帯電話の着信音を実現することができます。
<スパン
関連
-
jsについて Uncaught TypeError: null issue のプロパティ 'style' を読み取ることができません。
-
デバッグアサーションに失敗しました
-
AttributeError: 'dict' オブジェクトは 'append' という属性を解決していません。
-
Pythonのsort関数とsorted関数の違いとpythonのエラーについて。AttributeError: 'list' オブジェクトに 'sorted' 属性がない 理由
-
WSLubuntuでESP8266のIDF版をビルドすると、「AttributeError: 'module' object has no attribute 'SSL_ST_INIT' 」というエラーが発生します。
-
[UE4公式ドキュメント翻訳】Unreal Engine 4 For Unity Developers (UE4、ユニティデベロッパーズ向け)
-
落とし穴を踏む-Uncaught Error: BootstrapのJavaScriptは、jQueryを必要とします。
-
laydate が表示される laydate が定義されていない
-
Android SpinnerAdapterの使用
-
シェルを実行するためにexecを使用するant
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
gitアップロードファイルのエラーを修正する方法 [rejected] master -> master (fetch first) error: failed to push some refs to '.
-
Sina Weibo 共有と libc++abi.dylib: NSException 型のキャッチできない例外で終了する Weibo WeChat SDK 実行時のコンパイルエラー...
-
IntelliJ IDEAでgitを使用してリモートリポジトリから読み込めなかった問題を解決する
-
[エラー] '}' トークンの前に期待される式
-
エラー: Qt での不完全な型 'Ui:' のアロケーション
-
Vue プロジェクトの Heroku デプロイメントに失敗する: sh: 1: vue-cli-service: 見つからない
-
eclipseでプロジェクトを追加する すでにワークスペースに存在するため、インポートできないプロジェクトがある
-
error: 'atoi' is not declared in this scope
-
std::invalid_argument' what() のインスタンスを投げた後に呼び出された処理を終了させる: stoi
-
C/C++学習メモ-アクティブな例外なしで呼び出されるterminate