私はウェア・ウォッチからデータ、バイトを送信します。私は自分の電話機でバックグラウンドサービスでデータを受信したいが、onMesageReceivedは決して呼び出されない。私が間違っていることのアイデア?私の最初の試みは働いていたが実用的ではないアプリのアプリを使っていた。モバイル上のGoogle Message APIを使用してサービスでデータを受信する
サービス:AndroidManifestに追加
public class LampControlService extends Service implements MessageApi.MessageListener, GoogleApiClient.ConnectionCallbacks {
private static final String TAG = "test";
private static final String WEAR_MESSAGE_PATH = "/message";
private GoogleApiClient mGoogleApiClient;
private ArrayAdapter<String> mAdapter;
@Override
public void onCreate(){
HandlerThread thread = new HandlerThread("test");
thread.start();
//---Build a new Google API client--
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.build();
if (mGoogleApiClient != null && !(mGoogleApiClient.isConnected() ||
mGoogleApiClient.isConnecting()))
mGoogleApiClient.connect();
}
public int onStartCommand(Intent intent, int flags, int startId){
return START_STICKY;
}
@Override
public void onDestroy() {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onConnected(Bundle bundle) {
Wearable.MessageApi.addListener(mGoogleApiClient, this);
Log.d(TAG, "onConnected()");
}
@Override
public void onMessageReceived(final MessageEvent messageEvent) {
Log.d(TAG, "onMessageReceived()");
if (messageEvent.getPath().equalsIgnoreCase(WEAR_MESSAGE_PATH)) {
String lamp = new String(messageEvent.getData());
sendLampCommand(lamp);
}
else {
// super.onMessageReceived(messageEvent);
}
}
// @Override
public void onConnectionSuspended(int i) {
}
private static void sendLampCommand(String lamp){
// Send lamp command to web server
}
}
ライン:
<service
android:name=".LampControlService">
<service android:name=".DataLayerListenerService">
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
</intent-filter>
</service>
</service>
良い提案! – Henrik