昨日の「【React Native】端末がサイレントモードかどうか検出する」という記事で、react-native-sound ライブラリを使って端末の音量を取得する方法について紹介しましたが、Android では正しく動作しなかったので別の方法についてです。
実際に React Native アプリに音量取得の処理を追加して、Android 端末で実行したところ、音量を変更しても常に 1 が返ってきました…。
で、調べたところ、「react-native-system-setting」というライブラリでも音量を取得できそうだったので、こちらを導入しました。
GitHub のページはこちらです。
c19354837/react-native-system-setting: A library to access system setting, and change it easily. eg: volume, brightness, wifi
https://github.com/c19354837/react-native-system-setting
ライブラリの導入は、下記のコマンドを実行します。
npm install --save react-native-system-setting
あとは任意の場所に下記を追加すればOKです。
import SystemSetting from 'react-native-system-setting' SystemSetting.getVolume().then((volume) => { // 現在の音量を取得 console.log(volume); });
3行目からの処理で、現在の端末の音量を取得しています。
上記コードでは、現在の音量をログに出力しているだけですが、実際にはもし音量が 0 =ミュートだったら、音量を上げるように促すダイアログを表示する処理を実行するようにしています。
実際に上記コードを実行したところ、無事端末の音量を取得できました。
試しに音量を 0 にした状態で再度実行しましたが、問題なく 0 が取得できました。
Android では問題なかったので、次は iOS でも実行して確認したいと思います!
以上、React Native で端末の音量を取得する方法についてでした。
ご参考になれば幸いです。