Android Home And Lock Screen Widget - (Temperature Widget)

Create TemperatureWidget class and register with Temperature sensor intend
Download Source
package com.javaorigin.widget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.RemoteViews;

package com.javaorigin.widget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.RemoteViews;

public class TemperatureWidget extends AppWidgetProvider {
 double temp=0;
 @Override
 
 public void onUpdate(Context context, AppWidgetManager appWidgetManager,
   int[] appWidgetIds) {
  context.getApplicationContext().registerReceiver(this,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
  updateUI(context) ;
 }

 @Override
 public void onReceive(Context context, Intent intent) {  
  temp=intent.getIntExtra("temperature", 0)/10.0D;
  updateUI(context) ;
  super.onReceive(context, intent);
 }

 private void updateUI(Context context) {
  RemoteViews thisViews = new RemoteViews(context.getApplicationContext() .getPackageName(), R.layout.widget_layout);
  thisViews.setTextViewText(R.id.update, temp + "");

  ComponentName thisWidget = new ComponentName(context,TemperatureWidget.class);
  AppWidgetManager.getInstance(context).updateAppWidget(thisWidget,thisViews);
 }
}

Create widget_layout.xml under res/layout folder
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="8dip"
    android:background="@drawable/myshape" >

    <TextView
        android:id="@+id/update"
        style="@android:style/TextAppearance.Medium"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:gravity="center_horizontal|center_vertical"
        android:layout_margin="4dip"
        android:text="Static Text" >
    </TextView>

</LinearLayout> 
Create myshape.xml under res/drawable folder

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <stroke
        android:width="2dp"
        android:color="#FFFFFFFF" />

    <gradient
        android:angle="225"
        android:endColor="#DD2ECCFA"
        android:startColor="#DD000000" />

    <corners
        android:bottomLeftRadius="7dp"
        android:bottomRightRadius="7dp"
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp" />

</shape>
Create widget_info.xml under res/xml folder ,We can create this xml file using " File-->New --> Android xml file " menu with resource type is AppWidget Provider option ,then set attribute android:widgetCategory="keyguard|home_screen"
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"  
    android:initialLayout="@layout/widget_layout"
    android:minHeight="20dp"
    android:minWidth="20dp"
    android:updatePeriodMillis="30000" android:widgetCategory="keyguard|home_screen">  
    

</appwidget-provider>

Configure android manifest xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.javaorigin.widget"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
           <receiver android:name="TemperatureWidget" >
            <intent-filter >
                <action 
                    android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/widget_info" />
        </receiver>
    </application>

</manifest>

26 comments :

  1. i have one suggestion.need explanation about the code and what u does

    ReplyDelete
  2. Good job man.
    http://www.hifive-studio.com/

    ReplyDelete
  3. i am facing the issue while running this code Like:-01 08:03:01 - TemperatureWidget] \TemperatureWidget\bin\TemperatureWidget.apk installed on device
    [2015-04-01 08:03:01 - TemperatureWidget] Done!

    ReplyDelete
  4. i have one project i want to put my app icon on the lock screen how it is possible plz help me my id is aashusonava@gmail.com

    ReplyDelete
    Replies
    1. For more details contact me at akhilgite@gmail.com

      Delete
  5. i have a suggestion that u also have to show the image of its output.

    ReplyDelete
  6. free android app source codes available in www.oortech.in

    ReplyDelete
  7. Good blog for newly developer..easy way to approach the Android Home And Lock Screen Widget.Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck.
    Android Training in chennai | Android Training

    ReplyDelete
  8. Excellent post! how to add a AppName at the bottom of widget?? please tell me.

    ReplyDelete
  9. I am really happy with your blog because your article is very unique and powerful for new reader.
    selenium training in chennai
    selenium training in bangalore

    ReplyDelete
  10. myTectra Placement Portal is a Web based portal brings Potentials Employers and myTectra Candidates on a common platform for placement assistance

    ReplyDelete
  11. This comment has been removed by the author.

    ReplyDelete
  12. thank you so much for this nice information Article, Digitahanks for sharing your post with us.sap scm training in bangalore

    ReplyDelete
  13. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful.sap crm training in bangalore

    ReplyDelete
  14. I have read your blog its very attractive and impressive. I like it your blog.sap ewm training in bangalore

    ReplyDelete
  15. Great post!I am actually getting ready to across this information,i am very happy to this commands.Also great blog here with all of the valuable information you have.Well done,its a great knowledgez.

    ReplyDelete
  16. Thank you for sharing such a nice post!

    Learn DevOps Training from the Industry Experts we bridge the gap between the need of the industry. Softgen Infotech provide the Best DevOps Training in Bangalore with 100% Placement Assistance. Book a Free Demo Today.

    ReplyDelete
  17. Very interesting, good job and thanks for sharing such a good blog. your article is so convincing that I never stop myself to say something about it. You’re doing a great job. Keep it up…

    Learn DevOps Training from the Industry Experts we bridge the gap between the need of the industry. Softgen Infotech provide the Best DevOps Training in Bangalore with 100% Placement Assistance. Book a Free Demo Today.

    ReplyDelete
  18. I have read Your Article and Learn a lot from it. I can Imagine the time it took to get all this expertise exposed . You can also look here to see where to easily get a HIGH QUALITY BANK STATEMENTS FOR MORTGAGE I've bookmark your site and furthermore include RSS. keep us refreshed all the time.

    ReplyDelete
  19. I am happy to find this post very useful for me, as it contains lot of information.
    check here

    ReplyDelete
  20. Learn Amazon Web Services for excellent job opportunities from Infycle Technologies, the Excellent AWS Training in Chennai. Infycle Technologies gives the most trustworthy AWS course in Chennai, with full hands-on practical training from professional trainers in the field. Along with that, the placement interviews will be arranged for the candidates, so that, they can meet the job interviews without missing them. To transform your career to the next level, call 7502633633 to Infycle Technologies and grab a free demo to know more

    ReplyDelete