【发布时间】:2014-02-05 14:21:45
【问题描述】:
我已经创建了我的小部件存在和运行所需的一切。即便如此,在第一次点击时,t 会执行应有的操作,但随后图像会更改并显示问题,并且无法正常工作。我希望它打开闪光灯然后关闭它。 帮助将不胜感激。
FlashlightWidgetProvider
public class FlashlightWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Intent receiver = new Intent(context, FlashlightWidgetReceiver.class);
receiver.setAction("COM_FLASHLIGHT");
receiver.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, receiver, 0);
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.flash_widget);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, views);
}
}
FlashlightWidgetReceiver
public class FlashlightWidgetReceiver extends BroadcastReceiver {
private static boolean isLightOn = false;
private static Camera camera;
@Override
public void onReceive(Context context, Intent intent) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.flash_widget);
if(isLightOn) {
views.setImageViewResource(R.id.button, R.drawable.off);
} else {
views.setImageViewResource(R.id.button, R.drawable.on);
}
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(new ComponentName(context, FlashlightWidgetProvider.class),
views);
if (isLightOn) {
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
isLightOn = false;
}
} else {
// Open the default i.e. the first rear facing camera.
camera = Camera.open();
if(camera == null) {
Toast.makeText(context, R.string.no_camera, Toast.LENGTH_SHORT).show();
} else {
// Set the torch flash mode
Parameters param = camera.getParameters();
param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
try {
camera.setParameters(param);
camera.startPreview();
isLightOn = true;
} catch (Exception e) {
Toast.makeText(context, R.string.no_flash, Toast.LENGTH_SHORT).show();
}
}
}
}
}
【问题讨论】:
-
请非常仔细地解释它应该做什么,它正在做什么,以及它与它应该做什么有什么不同。在不知道它应该做什么的情况下,我们无能为力......
-
听起来你说它崩溃了。如果是这种情况,请发布 logcat。
-
@codeMagic 好吧,小部件被创建并仅在第一次点击时工作,之后它说像加载小部件的问题应该是图像,所以基本上它不会关闭闪光灯那已经打开了。我想通过这个小部件打开和关闭手电筒。哦,还有.. 崩溃没有
logcat -
有人能帮帮我吗?
-
如果有帮助,请查看我的回答并投票。
标签: android camera android-widget widget android-appwidget