안녕하세요
질문 내용대로 매인 activity 가 아닌 service 클래스에서
GoogleApiclient를 이용하고싶습니다
먼저 소스
package com.example.g9kim.wearproject;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.util.Log;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.wearable.MessageApi;
import com.google.android.gms.wearable.MessageEvent;
import com.google.android.gms.wearable.Wearable;
import com.google.android.gms.wearable.Node;
import com.google.android.gms.wearable.NodeApi;
/**
* Created by G9Kim on 2015-10-29.
*/
public class WatchService extends Service implements
MessageApi.MessageListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener{
GoogleApiClient googleClient;
private static final String TAG = "[MyLog]";
@Override
public void onCreate() {
Log.v(TAG, "ServiceCall onCreate");
super.onCreate();
googleClient = new GoogleApiClient.Builder(WatchService.this)
.addApi(Wearable.API)
.addConnectionCallbacks(WatchService.this)
.addOnConnectionFailedListener(WatchService.this)
.build();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.v(TAG, "ServiceCall onStartCommand" );
googleClient.connect();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
Log.v(TAG, "ServiceCall onDestroy");
googleClient.disconnect();
super.onDestroy();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
Log.v(TAG, "ServiceCall onBind");
return null;
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult)
{
Log.v(TAG, "onConnectionFailed");
}
@Override
public void onConnected(Bundle bundle) {
Log.v(TAG, "onConnected");
}
@Override
public void onConnectionSuspended(int i) {
Log.v(TAG, "onConnectionSuspended");
}
//Wear TO Send
class SendToDataLayerThread extends Thread
{
}
@Override
public void onMessageReceived(MessageEvent messageEvent) {
}
}
해당 service 는 MainActivity 에서 startservice() 로 호출 해주고 잇고요
실행하면
이런 로그가 뜨네요
10-29 15:53:02.238: V/[MyLog](5443): ServiceCall onCreate
10-29 15:53:02.243: V/[MyLog](5443): ServiceCall onStartCommand
10-29 15:53:02.244: D/AndroidRuntime(5443): Shutting down VM
10-29 15:53:02.244: E/AndroidRuntime(5443): FATAL EXCEPTION: main
10-29 15:53:02.244: E/AndroidRuntime(5443): Process: com.g9kim.myproject, PID: 5443
10-29 15:53:02.244: E/AndroidRuntime(5443): java.lang.IncompatibleClassChangeError: The method 'void com.google.android.gms.common.api.GoogleApiClient.connect()' was expected to be of type virtual but instead was found to be of type interface (declaration of 'com.example.g9kim.wearproject.WatchService' appears in /data/app/com.g9kim.myproject-1/base.apk)
10-29 15:53:02.244: E/AndroidRuntime(5443): at com.example.g9kim.wearproject.WatchService.onStartCommand(WatchService.java:47)
10-29 15:53:02.244: E/AndroidRuntime(5443): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3010)
10-29 15:53:02.244: E/AndroidRuntime(5443): at android.app.ActivityThread.-wrap17(ActivityThread.java)
10-29 15:53:02.244: E/AndroidRuntime(5443): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1442)
10-29 15:53:02.244: E/AndroidRuntime(5443): at android.os.Handler.dispatchMessage(Handler.java:102)
10-29 15:53:02.244: E/AndroidRuntime(5443): at android.os.Looper.loop(Looper.java:148)
10-29 15:53:02.244: E/AndroidRuntime(5443): at android.app.ActivityThread.main(ActivityThread.java:5417)
10-29 15:53:02.244: E/AndroidRuntime(5443): at java.lang.reflect.Method.invoke(Native Method)
10-29 15:53:02.244: E/AndroidRuntime(5443): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
10-29 15:53:02.244: E/AndroidRuntime(5443): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
이러한 로그가 뜨면서 어플이 종료 되네요
요지는 service 클래스에서 googleapiclient 에 연결할수잇는 방법이 없을까요?
도움 부탁드립니다~~~