Ich habe ein Widget, das aus zwei Schaltflächen und ein Bild besteht. Ich möchte es so machen, dass die Tasten für 30 Sekunden deaktiviert werden, wenn der Benutzer einen drückt. Wie kann dieser Effekt erreicht werden? Das ist mein Layout:vorübergehend deaktivieren Android Widget-Taste
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/widget_margin"
android:background="#55000000">
<ImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/bulb"/>
<Button
android:id="@+id/onButton"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="On"
android:background="@drawable/appwidget_dark_bg_clickable"
/>
<Button
android:id="@+id/offButton"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Off"
android:background="@drawable/appwidget_dark_bg_clickable"/>
</LinearLayout>
Dies ist mein aktueller Controller:
public class WidgetProvider extends AppWidgetProvider {
public static String ACTION_WIDGET_ON = "Lights turning on";
public static String ACTION_WIDGET_OFF = "Lights turning off";
private String serverUrl = //put your server URL here
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Intent active = new Intent(context, WidgetProvider.class);
active.setAction(ACTION_WIDGET_ON);
PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
remoteViews.setOnClickPendingIntent(R.id.onButton, actionPendingIntent);
active = new Intent(context, WidgetProvider.class);
active.setAction(ACTION_WIDGET_OFF);
actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
remoteViews.setOnClickPendingIntent(R.id.offButton, actionPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_WIDGET_ON)) {
Log.i("onReceive", ACTION_WIDGET_ON);
new RestPostUtil().execute(serverUrl + "/lightsOn");
} else if (intent.getAction().equals(ACTION_WIDGET_OFF)) {
Log.i("onReceive", ACTION_WIDGET_OFF);
new RestPostUtil().execute(serverUrl + "/lightsOff");
} else {
super.onReceive(context, intent);
}
}
}