제가 모르는게 너무 많아서 못하는 거 같아 코드랑 같이 설명 하겠습니다.
일단 제게는 MainWidget.java 클래스와 Button Receiver.java 클래스가 있습니다 (부주요한 부분의 코드는 삭제했습니다)
두개의 클래스가 있지만, 일단 제코드는 버튼을 클릭했을때만 발생하는 이벤트를 잡아 블루투스를 끄거나 킵니다
여기서 제문제는 제 위젯을 통해서가 아닌, 다른곳 예를들면 핸드폰 자체내에서 블루투스의 상태를 바꾸면
제위젯에서는 그상태가 바뀌었는지 모릅니다
제위젯으로 블루투스를 켰는데, 다른곳에서 꺼버리면, 제위젯은 아직 켜져있는 상태로 되어있는거죠..
그 블루투스의 상태를 항상 체크해서 위젯에 표시하고 싶은데, 제위젯이 언제 어떻게 그 이벤트가 발생되서 그 이벤트를 잡아내 표시 할수 있는지를 모르겠습니다.
요새 열심히 공부하고 있습니다만, 좀 쉽게 설명해 주시겠습니까?
public class MainWidget extends AppWidgetProvider {
public static final String ACTION_WIDGET_BLUETOOTH="ActionReceiverBluetooth";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
Intent active = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
active.setAction(ACTION_WIDGET_BLUETOOTH);
PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
remoteViews.setOnClickPendingIntent(R.id.btnBluetooth, actionPendingIntent);
}
}
public class ButtonReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
this.context = context;
if (intent.getAction().equals(MainWidget.ACTION_WIDGET_BLUETOOTH)) {
System.out.println("bluetooth");
Log.i("button-click","Bluetooth");
toggleBluetooth(context);
}
}
제생각엔 onReceiver안에 if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED)) 컨디션을 넣으면 될꺼 같았는데 전혀 안잡히네요..
이거 원... 감이 전혀 안오니...