private void notification() {
NotificationManagerCompat manager = NotificationManagerCompat.from(getApplication());
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplication());
builder.setAutoCancel(false);
builder.setSmallIcon(R.mipmap.ic_launcher);
Notification notification = builder.getNotification();
notification.flags |= Notification.FLAG_ONGOING_EVENT;
notification.flags |= Notification.FLAG_NO_CLEAR;
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
builder.setContentTitle(getResources().getString(R.string.app_name));
if (WearableListener.STATE_CONNECTED == WearableManager.getInstance().getConnectState()) {
builder.setContentText(getResources().getString(R.string.connected));
builder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
} else {
builder.setContentText(getResources().getString(R.string.not_connected));
}
Intent intent = new Intent(this, homepage.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
manager.notify(R.mipmap.ic_launcher, builder.build());
}
private static final Intent ACCESSIBILITY_INTENT = new Intent("android.settings.ACCESSIBILITY_SETTINGS");
public static final Intent NOTIFICATION_LISTENER_INTENT = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
private WearableListener wearableListener = new WearableListener() {
@Override
public void onConnectChange(int oldState, int newState) {
runOnUiThread(new Runnable() {
@Override
public void run() {
updateMainActivity();
}
});
bluetoothConnectStateSave = newState;
Log.e(TAG, "WearableListener newState=" + newState);
switch (newState) {
case WearableListener.STATE_NONE://0
bluetoothConnectState = newState;
break;
case WearableListener.STATE_CONNECTING://2
pview.removeCallbacks(timeRunnable);
bluetoothConnectState = newState;
count = 0;
count_max = COUNT_MAX - CONNECT_DELAY;
count_try_disconnect = 0;
pview.post(timeRunnable);
break;
case WearableListener.STATE_CONNECTED://3
handler.removeMessages(HANDLE_MESSAGE_RECONNECT_AUTO);
bluetoothConnectState = newState;
pview.removeCallbacks(timeRunnable);
notification();
break;
case WearableListener.STATE_CONNECT_FAIL://4
case WearableListener.STATE_CONNECT_LOST://5
case WearableListener.STATE_DISCONNECTING://6
notification();
break;
}
Log.e(TAG, "WearableListener bluetoothConnectState=" + bluetoothConnectState + " bluetoothConnectStateSave=" + bluetoothConnectStateSave);
Log.e(TAG, "WearableListener count=" + count + " count_max=" + count_max);
}
@Override
public void onDeviceChange(BluetoothDevice bluetoothDevice) {
runOnUiThread(new Runnable() {
@Override
public void run() {
updateMainActivity();
}
});
}
@Override
public void onDeviceScan(BluetoothDevice bluetoothDevice) {
}
@Override
public void onNameChange(String s) {
}
};
private void updateMainActivity() {
device = WearableManager.getInstance().getRemoteDevice();
}
上記は、Bluetooth Low Energy 接続および通知部分であるプロジェクトのコードです。私はアンドロイドウェア(時計が接続されていることを意味する「リスニング」を示しています)とアンドロイドフォンの間で接続できます。ただし、通知は電話にのみ表示され、アンドロイドウェアでは通知を受け取ることができません。私のプロジェクトの問題は何ですか?助けてください。どうもありがとうございます。