在Android中显示通知

时间:2016-12-29 10:19:17

标签: android bluetooth-lowenergy android-notifications wear-os android-wear-notification

 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();
}

以上是项目中的代码,即蓝牙低能耗连接和通知部分。我可以连接android穿戴(手表显示“监听”,这意味着他们已连接)和Android手机。但是,通知只显示在手机中,我无法在android中获取通知。我的项目有什么问题?请给我一些帮助。非常感谢你。

1 个答案:

答案 0 :(得分:0)

您是否尝试过检查此support page?您可以尝试给出的故障排除步骤,然后在每个步骤后检查您的手表以查看通知是否开始工作。如果仍然无效,请尝试resetting your watch to factory settings。重启手表似乎在短期内适用于大多数人,但problem can re-occur,有时很快。您还可以查看此Android Wear notifications issues forum,看看给定的解决方法是否有帮助。