0

Data Items を使用していくつかの文字列をウェアに送信しようとしていますが、onDataChanged() が呼び出されないため、ウェアが信号を受信して​​いないようです。タイムスタンプを設定して、送信されるたびにデータが常に異なるようにします.

アプリを動作させるために両方のデバイスにアプリをインストールする必要がある特定の方法はありますか? [実行] をクリックして電話を選択し、モジュールを切り替えて摩耗デバイスに対して同じことを行うだけです。

私の電話での主な活動のコードは次のとおりです。

public class HomeActivity extends Activity{

public static String TAG = "HomeActivity";
private GoogleApiClient mGoogleApiClient;


@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home_view);
    Button mButton = (Button) findViewById(R.id.send_button);
    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sendData();
        }
    });

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                @Override
                public void onConnected(Bundle bundle) {

                }

                @Override
                public void onConnectionSuspended(int i) {

                }
            }).addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(ConnectionResult connectionResult) {

                }
            }).addApi(Wearable.API)
            .build();
    mGoogleApiClient.connect();
}

private void sendData(){
    if (mGoogleApiClient!=null){
        return;
    }

    final PutDataMapRequest putRequest = PutDataMapRequest.create("/SAMPLE");
    final DataMap map = putRequest.getDataMap();
    map.putInt("color", Color.RED);
    map.putLong("date", new Date().getTime());
    Wearable.DataApi.putDataItem(mGoogleApiClient, putRequest.asPutDataRequest());
}

}

そして、これが私のウェアラブルのコードです:

public class LayoutFaceService extends CanvasWatchFaceService implements DataApi.DataListener{

@Override
public void onCreate(){
    super.onCreate();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Wearable.API)
            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                @Override
                public void onConnected(Bundle bundle) {
                    Log.i(TAG, "Connected");
                    Wearable.DataApi.addListener(mGoogleApiClient, LayoutFaceService.this);
                }

                @Override
                public void onConnectionSuspended(int i) {

                }
            })
            .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(ConnectionResult connectionResult) {

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


@Override
public void onDataChanged(DataEventBuffer dataEvents) {
    for (DataEvent event : dataEvents) {
        if (event.getType() == DataEvent.TYPE_DELETED) {
            Log.d(TAG, "DataItem deleted: " + event.getDataItem().getUri());
        } else if (event.getType() == DataEvent.TYPE_CHANGED) {
            Log.d(TAG, "DataItem changed: " + event.getDataItem().getUri());
        }
    }

}

そして私の摩耗マニフェスト:

<uses-feature android:name="android.hardware.type.watch" />

<uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.DeviceDefault" >
    <service
        android:name=".LayoutFaceService"
        android:label="@string/my_digital_name"
        android:permission="android.permission.BIND_WALLPAPER" >
        <meta-data
            android:name="android.service.wallpaper"
            android:resource="@xml/watch_face" />
        <meta-data
            android:name="com.google.android.wearable.watchface.preview"
            android:resource="@drawable/preview_digital" />
        <meta-data
            android:name="com.google.android.wearable.watchface.preview_circular"
            android:resource="@drawable/preview_digital_circular" />

        <intent-filter>
            <action android:name="android.service.wallpaper.WallpaperService" />
            <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
            <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
        </intent-filter>
    </service>

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
</application>
4

1 に答える 1

0

ではsendData()、条件が正しくないようです。mGoogleApiClient != nullは true なので、すぐに終了します。それに対処して、さらに先に進むことができるかどうかを確認してください。他にも問題があるかもしれませんが、それが最初の明らかな問題です。それでも問題が完全に解決しない場合は、携帯電話のマニフェストも投稿に含めてください。

于 2015-09-06T06:39:49.297 に答える