Bluetooth チャット サンプル アプリケーションのコードを使用しています。ユーザーがアプリを離れている間、データを受信できる必要があります。だから私がこれを行うと:
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
String readMessage = new String(readBuf, 0, msg.arg1);
mConversationArrayAdapter.add(mConnectedDeviceName+": " + readMessage);
/***************************ADDED***************************/
System.out.println("Number is"+(int)(readMessage.charAt(0)));
/***************************ADDED***************************/
break;
DDMS に println ステートメントが表示されます。
私がこれを行う場合:
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
String readMessage = new String(readBuf, 0, msg.arg1);
mConversationArrayAdapter.add(mConnectedDeviceName+": " + readMessage);
/***************************ADDED***************************/
System.out.println("Number is"+(int)(readMessage.charAt(0)));
Toast.makeText(getApplicationContext(), "received!! "
+ mConnectedDeviceName, Toast.LENGTH_SHORT).show();
/***************************ADDED***************************/
break;
アプリケーションを終了して他のアプリを開いている場合でも、トースト メッセージが表示されます。
最後に、私が本当に欲しいのは、特定のデータを受信したときにアプリが実行されていないかどうかに関係なく、アラートダイアログを開き、たとえば「はい」を押すと何かを作成します(「はい」と「いいえ」でhttpリクエストを作成したい)私のアプリに転送されます。)
これは私のコードです:
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
String readMessage = new String(readBuf, 0, msg.arg1);
mConversationArrayAdapter.add(mConnectedDeviceName+": " + readMessage);
/***************************ADDED***************************/
new AlertDialog.Builder(getApplicationContext())
.setTitle("Title")
.setMessage("Message")
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//make http request
}
})
.setNegativeButton("No",
new DialogInterface.OnClickListener() {
// @Override
public void onClick(DialogInterface dialog, int which) {
//open my app
}
}).show();
/***************************ADDED***************************/
break;
その場合、アプリを離れてデータを受信すると、強制終了します。引数 getApplicationContext が間違っていると思いますが、何を使用すればよいかわかりません。
解決策: 代わりに通知を使用しました。