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();
}
The above is the code in the project which is the bluetooth low energy connection and notification part. I can connect between android wear (the watch is showing "listening" which means that they are connected) and android phone. However, the notification only shows in the phone and I cannot get the notification in the android wear. What is the issue in my project? Please give me some helps. Thank You very much.
Have you tried checking this support page? You may try the troubleshooting steps given then check your watch after each step to see if notifications start working. If it still doesn't work, try resetting your watch to factory settings. Restarting the watch seems to work for most people in the short term, but the problem can re-occur, sometimes quite quickly. You can also check this Android Wear notifications issues forum and see if the given workaround will help.