java - 在 AppWidgetProvider 中获取 GPS 经纬度
问题描述
我的问题:
- 如何在 AppWidgetProvider 中获取 GPS 纬度和经度。
- 做起来有多烦?
- 它有多不受欢迎?
我已经看到了活动的示例,但没有看到 AppWidgetProvider 的示例。我知道那里必须有获取 GPS 信息的小部件。
这是我目前不起作用的尝试。我无论如何都不会接受这个解决方案。如果有人有工作示例,将不胜感激。
ClockWidget.java
public class ClockWidget extends AppWidgetProvider {
...
private void getLastLocation(Context context) {
if (mFusedLocationClient == null)
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(context);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mFusedLocationClient.getLastLocation().addOnCompleteListener(new OnCompleteListener<android.location.Location>() {
@Override
public void onComplete(@NonNull Task<android.location.Location> task) {
android.location.Location location = task.getResult();
Location loc = new Location("0", "0");
if (location == null) {
} else {
loc = new Location(location.getLatitude(), location.getLongitude());
}
SunriseSunsetCalculator calculator = new SunriseSunsetCalculator(loc, "America/New_York");
Calendar sunriseCalendar = calculator.getOfficialSunriseCalendarForDate(Calendar.getInstance());
LocalDateTime sunriseTime = LocalDateTime.ofInstant(sunriseCalendar.toInstant(), sunriseCalendar.getTimeZone().toZoneId());
Calendar sunsetCalendar = calculator.getOfficialSunsetCalendarForDate(Calendar.getInstance());
LocalDateTime sunsetTime = LocalDateTime.ofInstant(sunsetCalendar.toInstant(), sunsetCalendar.getTimeZone().toZoneId());
dayEvents.put("Sunrise", new DayEvent("Sunrise", sunriseTime));
dayEvents.put("Sunset", new DayEvent("Sunset", sunsetTime));
}
});
}
}
...
AndroidManifest.xml
...
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
...
==================================================== ===============
背景:我正在尝试编写一个时钟 AppWidgetProvider。时钟是我希望人们想要创建的第一个小部件之一,但我每时每刻都在与谷歌作斗争。我不应该对所有事情都需要解决方法......
5 小时以上的路障:
在小部件上绘制自定义图形显然是一个很大的禁忌。在 5 个不起作用的解决方案之后,此处描述了解决方法: 在小部件 android 上绘制画布
比每 30 分钟更频繁地更新小部件显然是一个很大的禁忌。最直观的解决方案 android:updatePeriodMillis 最少有 30 分钟。在 5 个无效的解决方案之后,解决方法很麻烦,并在此处描述: https ://www.appsrox.com/android/tutorials/dailyvocab/2/
将 API 版本从 21 更改为 26 会导致 android studio 中的模拟器完全停止工作。在 5 个无效的解决方案之后,HAXM 问题下描述了解决方法: https ://docs.microsoft.com/en-us/xamarin/android/get-started/installation/android-emulator/troubleshooting?pivots=windows
在画布上绘制表情符号显然是一个很大的禁忌。在 5 个解决方案无效后,此处描述了解决方法: 使用 unicode 值在 Android 画布上绘制表情符号
在 AppWidgetProvider 中获取 GPS 纬度经度显然是一个很大的禁忌。期待人们可能有的想法!
解决方案
推荐阅读
- python - 尝试重命名 Program Files (x86) 中的每个文件时出现 OSError
- python - 将python pandas中的列拆分为两列
- go - 我想在使用 ReverseProxy 重定向之前向 Post 表单添加一个新值
- php - 网站超大图像打印,用户自定义尺寸
- go - 将请求正文插入数据库
- jquery - Swiper Pagination Bullets - 可用于键盘
- mysql - 在 laravel 中与数据透视表连接的表格
- php - 如何在迁移过程中播种特定表 - Laravel 5?
- c# - 在 C# .NET 中使用队列
- php - 在 WooCommerce 购物车页面的 AJAX 调用中未加载 JavaScript