Commit c5f5d0fd by Lee Jaebin

メディアプレイヤーを利用して、温度計の値取得成功音を再生する対応

parent 37120e0a
...@@ -103,12 +103,6 @@ public class BleManagerUtil { ...@@ -103,12 +103,6 @@ public class BleManagerUtil {
// 切断が発生する場合、Bluetoothと接続を切断する。 // 切断が発生する場合、Bluetoothと接続を切断する。
disconnect(); disconnect();
runOnUiThread( new Runnable() {
public void run() {
// 切断トーストメッセージを表示する。
// listener.onDisConnectionState();
}
} );
return; return;
} }
} }
...@@ -170,16 +164,6 @@ public class BleManagerUtil { ...@@ -170,16 +164,6 @@ public class BleManagerUtil {
setCharacteristicNotification(UUID_SERVICE_PRIVATE, UUID_NOTIFY, true); setCharacteristicNotification(UUID_SERVICE_PRIVATE, UUID_NOTIFY, true);
return; return;
} }
if( UUID_CHARACTERISTIC_PRIVATE2.equals( characteristic.getUuid() ) ) { // キャラクタリスティック2:データサイズは、8バイト(文字列を想定。半角文字8文字)
final String strChara = characteristic.getStringValue( 0 );
runOnUiThread( new Runnable() {
public void run() {
// 渡すデータがある場合
}
});
return;
}
} }
// キャラクタリスティック変更が通知されたときの処理 // キャラクタリスティック変更が通知されたときの処理
...@@ -189,7 +173,12 @@ public class BleManagerUtil { ...@@ -189,7 +173,12 @@ public class BleManagerUtil {
final String strTemperature = byteToString(characteristic.getValue()); final String strTemperature = byteToString(characteristic.getValue());
runOnUiThread( new Runnable() { runOnUiThread( new Runnable() {
@Override
public void run() { public void run() {
// 複数呼ばれるため、mBluetoothGattがnullの場合、以下の処理を行わない
if( null == mBluetoothGatt ) {
return;
}
// 芯温計の温度を渡す。 // 芯温計の温度を渡す。
listener.onGetDeviceInfo(strTemperature); listener.onGetDeviceInfo(strTemperature);
} }
......
...@@ -5,7 +5,10 @@ import android.bluetooth.BluetoothAdapter; ...@@ -5,7 +5,10 @@ import android.bluetooth.BluetoothAdapter;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.res.AssetFileDescriptor;
import android.location.LocationManager; import android.location.LocationManager;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.widget.Toast; import android.widget.Toast;
...@@ -17,6 +20,7 @@ import com.nttdocomo.android.sdaiflib.Define; ...@@ -17,6 +20,7 @@ import com.nttdocomo.android.sdaiflib.Define;
import org.json.adf.JSONObject; import org.json.adf.JSONObject;
import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.Locale; import java.util.Locale;
...@@ -33,6 +37,7 @@ import jp.agentec.abook.abv.ui.common.util.ABVToastUtil; ...@@ -33,6 +37,7 @@ import jp.agentec.abook.abv.ui.common.util.ABVToastUtil;
import jp.agentec.abook.abv.ui.common.util.AlertDialogUtil; import jp.agentec.abook.abv.ui.common.util.AlertDialogUtil;
import jp.agentec.abook.abv.ui.home.activity.BarCodeReaderActivity; import jp.agentec.abook.abv.ui.home.activity.BarCodeReaderActivity;
import jp.agentec.abook.abv.ui.home.helper.ABookPermissionHelper; import jp.agentec.abook.abv.ui.home.helper.ABookPermissionHelper;
import jp.agentec.adf.util.StringUtil;
public class ABVCheckContentViewActivity extends ABVContentViewActivity { public class ABVCheckContentViewActivity extends ABVContentViewActivity {
private static final String TAG ="ABVCheckContentViewActivity"; private static final String TAG ="ABVCheckContentViewActivity";
...@@ -78,6 +83,8 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity { ...@@ -78,6 +83,8 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity {
//デバイスタイプ(1:中心温度計、2:置くだけセンサー、3:バーコード) //デバイスタイプ(1:中心温度計、2:置くだけセンサー、3:バーコード)
private int mDeviceType; private int mDeviceType;
// メディアプレイヤー
private MediaPlayer mMediaPlayer;
/** /**
* Beaconスキャン結果受信Receiver. * Beaconスキャン結果受信Receiver.
...@@ -402,6 +409,10 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity { ...@@ -402,6 +409,10 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity {
thermometerDataJson.put(ABookKeys.TASK_QUESTION_ID, mQid); thermometerDataJson.put(ABookKeys.TASK_QUESTION_ID, mQid);
thermometerDataJson.put("value", strTemp); thermometerDataJson.put("value", strTemp);
afterABookCheckApi(mCmd, "", 0, "", thermometerDataJson.toString()); afterABookCheckApi(mCmd, "", 0, "", thermometerDataJson.toString());
// 値が空ではない場合、成功音を出す。
if (strTemp != null && strTemp.length() > 0) {
audioPlay();
}
Logger.v(TAG, "thermometer JSON [%s]", thermometerDataJson.toString()); Logger.v(TAG, "thermometer JSON [%s]", thermometerDataJson.toString());
} }
...@@ -445,4 +456,75 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity { ...@@ -445,4 +456,75 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity {
private void errorAfterAbookCheckAip(String errorMessage) { private void errorAfterAbookCheckAip(String errorMessage) {
afterABookCheckApi(mCmd, "", 1, errorMessage, ""); afterABookCheckApi(mCmd, "", 1, errorMessage, "");
} }
/**
* mediaPlayerにmp3ファイルをセット
* @return
*/
private boolean audioSetup() {
boolean fileCheck = false;
// インタンスを生成
mMediaPlayer = new MediaPlayer();
//音楽ファイル名, あるいはパス
String filePath = "temperatureAudio.mp3";
// assetsから mp3 ファイルを読み込み
try(AssetFileDescriptor afdescripter = getAssets().openFd(filePath))
{
// MediaPlayerに読み込んだ音楽ファイルを指定
mMediaPlayer.setDataSource(afdescripter.getFileDescriptor(),
afdescripter.getStartOffset(),
afdescripter.getLength());
// 音量調整を端末のボタンに任せる
setVolumeControlStream(AudioManager.STREAM_MUSIC);
mMediaPlayer.prepare();
fileCheck = true;
} catch (IOException e1) {
e1.printStackTrace();
}
return fileCheck;
}
/**
* mediaplayerをセットして、mp3を再生するメソッド
*/
private void audioPlay() {
// mMediaPlayerがnullではない場合は、再生終了されてないと見做し、audioStopメソッドを実行
if (mMediaPlayer != null) {
Logger.v("error not stop audio");
audioStop();
}
// audio ファイルを読出し
if (!audioSetup()) {
Logger.e("mediaplayer audio set up error");
return;
}
// 再生する
mMediaPlayer.start();
// 終了を検知するリスナー
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Logger.d("debug","end of audio");
audioStop();
}
});
}
// mediaPlayerを再生終了する
private void audioStop() {
// 再生終了
mMediaPlayer.stop();
// リセット
mMediaPlayer.reset();
// リソースの解放
mMediaPlayer.release();
// mediaPlayerを初期化
mMediaPlayer = null;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment