`
abc20899
  • 浏览: 933915 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

appwidget显示当前的位置

阅读更多
先看下效果吧!



MyAppWidgetProvider .java

public class MyAppWidgetProvider extends AppWidgetProvider{
  private Timer timer;
  private int[] appWidgetIds;
  private AppWidgetManager appWidgetManager;
  private Context context;
  public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds){
            super.onUpdate(context, appWidgetManager, appWidgetIds);
            this.appWidgetIds = appWidgetIds;
            this.appWidgetManager = appWidgetManager;
            this.context = context;
            Intent intent = new Intent(context,MyLocation.class);
            context.startService(intent);
           // views.setTextViewText(R.id.tvMsg, "text");
//appWidgetManager.updateAppWidget(appWidgetIds, views);
    }
}


service:
public class MyLocation extends Service{
public ArrayList<String> locationArr = new ArrayList<String>();
LocationManager lm;
LocationListener ll = new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
Location l = lm.getLastKnownLocation(provider);
updtateView(l);
}
@Override
public void onProviderDisabled(String provider) {
updtateView(null);
}
@Override
public void onLocationChanged(Location location) {
updtateView(location);
}
};
@Override
public void onCreate() {
super.onCreate();
        lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        //设置查询条件
        String bestProvider = lm.getBestProvider(getCriteria(), true);
        //获取位置
        Location l = lm.getLastKnownLocation(bestProvider);
        updtateView(l);
        //设置监听器
        lm.requestLocationUpdates(bestProvider,5000,8,ll);
}
    //编写查询条件的方法
    public Criteria getCriteria(){
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_COARSE);//设置查询精度
    criteria.setSpeedRequired(false);//设置是否要求速度
    criteria.setCostAllowed(false);//设置是否产生费用
    criteria.setBearingRequired(false);//设置是否得到方向
    criteria.setAltitudeRequired(false);//设置是否得到海拔高度
    criteria.setPowerRequirement(Criteria.POWER_LOW);//设置运行的电池级别
    return criteria;
    }
    public void updtateView(Location newLocation){
    if (newLocation!=null) {
    locationArr.add(String.valueOf(newLocation.getLatitude()));//添加纬度
    locationArr.add(String.valueOf(newLocation.getLongitude()));//添加经度
}else {
locationArr.add("没有获取您的位置");
}
    }
    public ArrayList<String> getMessage(){
    if (locationArr!=null) {
    return locationArr;
}else {
return null;
}
    }

    @Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
RemoteViews views = new RemoteViews(this.getPackageName(),
                R.layout.firstappwidget);
String content = "您的位置:"+"\n"+"纬度:"+getMessage().get(0)+
          "\n"+"经度:"+getMessage().get(1);
views.setTextViewText(R.id.tvMsg,content);
ComponentName thisWidget = new ComponentName(this,MyAppWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(thisWidget, views);
}

public String getTime(){
Time myTime = new Time();
myTime.setToNow();
return myTime.format("%H:%M:%S");
}
    @Override
    public void onDestroy() {
    super.onDestroy();
    }
}

系统配置文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="sunny.app"
      android:versionCode="1"
      android:versionName="1.0">


    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <receiver android:name=".MyAppWidgetProvider">
            <meta-data android:name="android.appwidget.provider"
                    android:resource="@xml/appwidget_provider" />
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
        </receiver>
        <service android:name="sunny.app.MyLocation"/>
    </application>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOACTION"/>
    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>



<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="200dp"
    android:minHeight="100dp"
    android:updatePeriodMillis="1000"
    android:initialLayout="@layout/firstappwidget"/>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
   
    <TextView
        android:id="@+id/tvMsg"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="21dp"
        android:textColor="#FFFFFF"
        android:background="@drawable/background_shape"/>
</LinearLayout>
  • 大小: 124.1 KB
分享到:
评论

相关推荐

    android appwidget全面解析

    例如,天气预报小部件可以实时显示当前天气状况,而日历小部件则能显示即将到来的日程。 #### 1.2 构成元素 AppWidget主要由两部分构成:WidgetProvider(提供者)和RemoteViews(远程视图)。WidgetProvider负责...

    Android App Widget 开发

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/app_widget_info" /&gt; ``` 最后,为了让用户能够添加你的App ...

    android app widget demo

    例如,如果你的Widget显示的是新闻标题,可以定期通过后台服务发送一个更新广播,BroadcastReceiver接收到广播后,使用RemoteViews对象来修改Widget上的文本视图,然后调用AppWidgetManager的updateAppWidget()方法...

    appwidget时间每秒刷新一次

    在本例中,我们关注的是一个特定类型的AppWidget,它显示时间并每秒更新一次。创建这样一个实时更新的时钟AppWidget涉及到多个关键知识点。 首先,我们需要了解`AppWidgetProvider`。它是AppWidget的主要组件,类似...

    android 桌面控件appwidget

    这个Activity通常会启动一个Intent,让用户选择AppWidget的大小和位置。 6. **测试和发布**:使用Android Studio的AVD管理器或实际设备进行测试,确保AppWidget正常工作。然后,打包应用并发布到Google Play或其他...

    Android基础教程之---AppWidget讲解2

    一个简单的AppWidget可能是显示当前时间的时钟,使用TextClock或TextView显示小时和分钟,并通过AlarmManager定期更新时间。通过AppWidgetProvider响应ACTION_TIME_TICK广播,当时间变化时自动更新界面。 总结,App...

    Android之初学Appwidget

    - **播放控制小部件**:用于音乐播放器,显示当前播放状态并提供播放/暂停按钮。 7. **优化和注意事项** - **性能优化**:减少不必要的更新,合理设置更新间隔。 - **内存管理**:注意及时释放资源,避免内存...

    AppWidget桌面时钟插件的实现

    本教程将深入讲解如何使用AppWidget来创建一个桌面时钟插件,确保其显示的时间与系统时间保持同步,并且在用户点击时能够跳转到相应的应用程序。 首先,我们需要了解AppWidget的基本结构。一个AppWidget通常由以下...

    Android appWidget每日一句修正2

    综上所述,"Android appWidget每日一句修正2"的更新很可能优化了对网络状态的检测和处理,使得即使在网络不稳定的情况下,小部件也能正常显示内容或适当地向用户传达网络状况。这样的改进提升了用户体验,减少了因...

    Android小部件AppWidget.zip

    这个名为"Android小部件AppWidget.zip"的压缩包包含了一个Android应用的源码,供开发者参考和学习使用。它涉及到Android开发中的几个核心知识点,包括AppWidgetProvider、RemoteViews、BroadcastReceiver以及XML布局...

    widget实现

    6. **权限和元数据**:确保在`AndroidManifest.xml`中添加了必要的权限,如`android.permission.BIND_APPWIDGET`。同时,需要为每个Widget尺寸提供相应的`appwidget-provider`元数据,指定最小和最大宽度/高度。 在...

    Android Studio 显示日期时间的Widget

    本教程将深入讲解如何在Android Studio中创建一个能够显示当前日期和时间的Widget,这个Widget会随着手机系统时间的改变而自动更新。 首先,我们需要创建一个新的Android项目,并在res/layout目录下设计Widget的...

    讲解Android中的Widget及AppWidget小工具的创建实例

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/hello_widget_provider" /&gt; ``` 在这个例子中,`...

    Android课程设计Widget电池插件

    在`BatteryReceiver`的`onReceive()`方法中,可以调用`BatteryManager`的相关方法,如`getBatteryLevel()`来获取电池的当前电量,然后将这些数据传递给Widget进行显示。 至于UI界面的修改,描述中提到存在小瑕疵,...

    android clockwidget

    在Android平台上,`ClockWidget`是一种AppWidget,它允许开发者创建一种桌面小部件,用户可以在主屏幕上添加,显示时间信息,通常包括时钟、日期甚至天气等附加信息。AppWidgets是Android系统的一部分,它们提供了...

    Android 桌面显示今天日期源码.zip源码资源下载

    源码中会包含处理日期的方法,可能包括获取当前日期、格式化日期字符串以及更新App Widget显示的日期。 4. **Android布局文件(XML)**: 源码中会包含一个XML布局文件,定义了日期显示的UI元素,如TextView,用于...

    android的widget桌面开关例子

    为了使Widget具有交互性,我们需要在AppWidgetProvider的onReceive()方法中处理ACTION_APPWIDGET_UPDATE和ACTION_APPWIDGET_CLICK广播。当用户点击Widget时,ACTION_APPWIDGET_CLICK会被触发,此时我们可以根据用户...

    MusicAppWidget

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/app_widget_info" /&gt; ``` 接着,我们需要创建`app_widget_...

    Android程序研发源码Android 桌面显示今天日期源码.zip

    - 兼容性:考虑到Android版本的差异,使用`android.appwidget.AppWidgetProviderInfo`来设置最小和目标API级别,确保在不同设备上正常工作。 - 权限:检查是否需要请求任何权限,如读取系统时间等。 以上就是使用...

Global site tag (gtag.js) - Google Analytics