Myo 완장을 사용하는 Smart Home 제어 응용 프로그램을 개발 중입니다. 나는 그들의 SDK를 사용하고있다. 그러나 나는 해결 방법이 확실하지 않은 문제를 겪는다.특정 스레드에서 Myo SDK Listener를 실행하는 방법
Myo 포즈를 수신하는 Background Service가 있지만 SDK 및 Device Listener도 백그라운드 스레드에서 초기화되며 이벤트 (예 : onPose)는 주 스레드 내부에서 발생합니다.
SDK가 백그라운드 스레드에서 이벤트를 발생 시키도록 강제하는 방법이 있습니까?
서비스 코드 :
public class ListeningService extends Service {
@Override
public void onCreate() {
HandlerThread thread = new HandlerThread("MyoListener",
Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
mServiceLooper = thread.getLooper();
mServiceHandler = new ServiceHandler(mServiceLooper, this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Message msg = mServiceHandler.obtainMessage();
msg.arg1 = startId;
mServiceHandler.sendMessage(msg);
return START_STICKY;
}
private final class ServiceHandler extends Handler {
private Context context;
public ServiceHandler(Looper looper, Context context) {
super(looper);
this.context = context;
}
@Override
public void handleMessage(Message msg) {
Hub hub = Hub.getInstance();
if (!hub.init(context, getPackageName())) {
showToast("Couldn't initialize Hub");
stopSelf();
return;
}
mListener = new MyoListener(context);
hub.addListener(mListener);
}
}
}