Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未接收到从BroadcastReceiver到WearableListerService的消息_Android_Service_Broadcastreceiver_Wear Os_Receiver - Fatal编程技术网

Android 未接收到从BroadcastReceiver到WearableListerService的消息

Android 未接收到从BroadcastReceiver到WearableListerService的消息,android,service,broadcastreceiver,wear-os,receiver,Android,Service,Broadcastreceiver,Wear Os,Receiver,我正在尝试从我的移动应用程序向可穿戴应用程序中的服务发送消息。 消息需要从广播接收器发送。在BroadcastReceiver中,消息被成功发送,至少日志中是这样说的,但是没有触发方法onMessageReceive。 我不太确定可能是什么问题,我在两个build.gradle文件中都有相同的applicationId,但包名称不同。 在移动清单中,接收方具有以下声明: <receiver android:name="com.app.mobile.NewAlarm"

我正在尝试从我的移动应用程序向可穿戴应用程序中的服务发送消息。 消息需要从广播接收器发送。在BroadcastReceiver中,消息被成功发送,至少日志中是这样说的,但是没有触发方法onMessageReceive。 我不太确定可能是什么问题,我在两个build.gradle文件中都有相同的applicationId,但包名称不同。 在移动清单中,接收方具有以下声明:

 <receiver android:name="com.app.mobile.NewAlarm"
            android:exported="false">
            <intent-filter>
                <action android:name="com.example.android.support.wearable.notifications.ACTION_EXAMPLE" />
            </intent-filter>
        </receiver>

您试图在连接客户端之前发送消息,因此
getConnectedNodeResult.getNodes()
返回一个空列表

请尝试以下方法:

public void onReceive(Context context, Intent paramIntent) {
    mGoogleApiClient = new GoogleApiClient.Builder(context)
            .addApi(Wearable.API)
            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                @Override
                public void onConnected(Bundle bundle) {
                    sendMessage();
                }
                @Override
                public void onConnectionSuspended(int cause) {

                }
    }).build();
    mGoogleApiClient.connect();
}

是的,为我工作:)。非常感谢。但只是一个小问题,它会在我将wear连接到手机时调用OnConnect方法吗,还是只在触发onReceive方法时才调用?每次调用
mgoogleapClient.connect()时都会发生。这是当你连接到GoogleAppClient时,而不是手表。
<service android:name=".DataLayerListenerService" >
            <intent-filter>
                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
            </intent-filter>
        </service>
public class DataLayerListenerService extends WearableListenerService {

    public static final String START_ACTIVITY_PATH = "/notice";
    public static final String TAP_ACTION_PATH = "/tap";
    private static final String TAG = "DataLayerListenerService";

    @Override
    public void onMessageReceived(MessageEvent messageEvent) {

        Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
         Log.d(TAG, "Message Received !!");
        if (START_ACTIVITY_PATH.equals(messageEvent.getPath())) {
            Log.d(TAG, "Message Received !!");

            int vibeTime = 5000;
            String strVibeTime = new String(messageEvent.getData());
            if (!strVibeTime.equals("") && !strVibeTime.equals("0")) {
                vibeTime = (Integer.parseInt(strVibeTime)) * 1000;
            }
            sleep(1000);
            vibrator.vibrate(vibeTime);

        } else if (TAP_ACTION_PATH.equals(messageEvent.getPath())) {
            Log.d(TAG, "Tapping Received !!");
            vibrator.cancel();
        }
    }

    public synchronized void sleep(long msec) {
        try
        {
            wait(msec);
        }catch(InterruptedException e){
            Log.e(TAG, e.getMessage());
        }
    }
}
public void onReceive(Context context, Intent paramIntent) {
    mGoogleApiClient = new GoogleApiClient.Builder(context)
            .addApi(Wearable.API)
            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                @Override
                public void onConnected(Bundle bundle) {
                    sendMessage();
                }
                @Override
                public void onConnectionSuspended(int cause) {

                }
    }).build();
    mGoogleApiClient.connect();
}