我正在按照示例代码每10秒发送一次更新通知.代码如下,它是UpdateService一个AppWidgetProvider.如果我放了一个,Thread.sleep(10*1000);我可以看到我的服务循环的预期行为.我显然有一些根本错误的东西会立即触发.它应该是一个PendingIntent警报,将广播更新给我的听众.
long nextUpdate = 10*1000;
Log.d(TAG, "Requesting next update in " + nextUpdate + " msec." );
Intent updateIntent = new Intent(ACTION_UPDATE_ALL);
updateIntent.setClass(this, UpdateService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, updateIntent, 0);
// Schedule alarm, and force the device awake for this update
AlarmManager alarmManager = (AlarmManager)getBaseContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),
nextUpdate, pendingIntent);
Run Code Online (Sandbox Code Playgroud) android alarmmanager android-pendingintent android-appwidget
我写了一个应该是4x2主屏幕块的小部件.这是minheight和minwidth,根据当前的"App Widget Design Guidelines"页面
android:minWidth="250dp"
android:minHeight="110dp"
Run Code Online (Sandbox Code Playgroud)
如果系统版本低于Ice Cream Sandwich,则应从dimens.xml应用填充
在我的Nexus 4(xhdpi,Jellybean 4.2.1)上,这个小部件是4x2.在模拟器(hdpi,Gingerbread 2.3.3)上,这个小部件是4x2.然而,在我的Nexus 7(hdpi,Jellybean 4.2.1)上,小部件是3x2.我不能为我的生活弄清楚为什么或如何解决它.有什么想法吗?
我目前正在开发一个Android项目,它利用Homescreen Widget向用户显示数据.我在Widget中使用的视图是一个ListView.以下是我的代码:
WidgetService类
public class WidgetService extends RemoteViewsService
{
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent)
{
return (new WidgetRemoteViewsFactory(this.getApplicationContext(), intent));
}
}
Run Code Online (Sandbox Code Playgroud)
WidgetProvider类
public class WidgetProvider extends AppWidgetProvider
{
@Override
public void onDeleted(Context context, int[] appWidgetIds)
{
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context)
{
super.onDisabled(context);
}
@Override
public void onEnabled(Context context)
{
super.onEnabled(context);
}
@Override
public void onReceive(Context context, Intent intent)
{
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds)
{
for(int i=0;i<appWidgetIds.length;i++) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用自定义字体创建数字时钟小部件.事实证明这是我体验Android的最大挑战.(认为它会像它一样简单tc.setTypeFace("whatever")并且完成它)
最好的方法似乎是刮擦TextClock并使用a ImageView并使用自定义AlarmManager将Bitmap传递给它,以便每秒为视图创建一个新图像.
在进入Bitmap生成之前,我练习了一个简单的TextView使用本教程的Alarm Manager Widget
我的问题是我无法每秒更新一次.我使用
am.setRepeating(AlarmManager.RTC_WAKEUP , System.currentTimeMillis()+1000, 1000, pi);但它仍然只是每分钟左右更新它(虽然不是每分钟的顶部).我认为这与最新操作系统(Kitkat,Lollipop)的处理方式有关AlarmManagers.
我的问题是:
这是正确的方法吗?如果没有,请解释我应该做什么.
如何让窗口小部件每秒更新一次?
android widget alarmmanager android-appwidget android-5.1.1-lollipop
https://developer.android.com/training/camera/photobasics.html
我所要做的就是用相机拍照,保存并在ImageView中显示.
我按照上面的android教程继续在行上得到一个错误(一个NullPointerException):
Uri photoURI = FileProvider.getUriForFile(this, "com.example.android.fileprovider", photoFile);
Run Code Online (Sandbox Code Playgroud)
我知道我需要在应用程序的清单中配置FileProvider,并且"权限"必须匹配.我不太明白我应该在当局的论点中提出什么.我复制了教程中的所有代码,包括文件res/xml/file_paths.xml.如有必要,请提出任何问题
谢谢!
android android-appwidget android-studio android-fileprovider
好的,所以我正在开发一个AppWidget来检查电池电量并将其显示在TextView上.我的代码看起来像这样:
public class BattWidget extends AppWidgetProvider {
private RemoteViews views = new RemoteViews("com.nickavv.cleanwidgets", R.layout.battlayout);
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int appWidgetIds[]) {
final int N = appWidgetIds.length;
context.getApplicationContext().registerReceiver(this,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
Log.d("onReceive", "Received intent " + intent);
if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {
Integer level = intent.getIntExtra("level", -1);
views.setTextViewText(R.id.batteryText, level+"%");
AppWidgetManager myAWM = AppWidgetManager.getInstance(context);
ComponentName …Run Code Online (Sandbox Code Playgroud) 像这样的代码效果很好.
Intent configIntent = new Intent (context, WidgetConfigActivity.class);
configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pIntent = PendingIntent.getActivity(context, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteView.setOnClickPendingIntent(R.id.btn, pIntent);
Run Code Online (Sandbox Code Playgroud)
但是我想隐藏那个按钮,因为活动会出现,所以我试图将意图发送到小部件本身,在onReceive()方法中执行隐藏组件然后开始活动.问题是我无法startActivity()在AppWidget中使用函数.
有什么解决方案吗?
我AppWidgetProvider班上有以下代码.
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.i("Custom", "Update");
}
@Override
public void onReceive(Context context, Intent intent) {
Log.i("Custom", "Recieve");
}
Run Code Online (Sandbox Code Playgroud)
如果我注释掉该onReceive方法,onUpdate每次我将小部件添加到主屏幕时都会调用该方法,如果我不这样做则不会运行.有什么想法吗?
我正在开发相当多的主屏幕小部件,目前我必须在我的模拟器或手机上安装它们才能预览布局.
是否可以在Eclipse中预览布局?当我在预览模式下打开我的布局的XML时,它会将其显示为活动,因此缩放完全错误.
我已经通过了锁屏小部件文档,我实现了它,但这不是自动放在主锁窗口上的内容.我正在寻找提供Media Lock-screen窗口(在Jelly Bean及以上版本中)的媒体控制解决方案,如Google Play音乐应用程序.
看看谷歌播放音乐锁,这显然不是锁定屏幕小部件.

android ×10
alarmmanager ×2
widget ×2
battery ×1
eclipse-adt ×1
homescreen ×1
listview ×1
listviewitem ×1
sizing ×1