Tuesday, May 5, 2015

Android Watch Demo | Google Watch | Android Watch Time Demo | Creating Wearable Apps in Android Google

Hello Friends, today I am going to share steps to create a simple Google watch demo to show current time and date using java.util-

1)Open Android Studio IDE and update it to API Level 20.
2)Create New Project
3)Choose Android Wear project
4)Now by default IDE will create MainActivity.java and activity_main.xml, rect_activity_main.xml, round_activity_main.xml
5)Now open your MainActivity.java and set text value-
 mTextView.setText(String.valueOf(new Date()));






Full Code:
1)MainActivty.java

package demo.watch.androidhub4you.com.androidwatch;

import android.app.Activity;
import android.os.Bundle;
import android.support.wearable.view.WatchViewStub;
import android.widget.TextView;
import java.util.Date;

public class MainActivity extends Activity {

    private TextView mTextView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
        stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
            @Override
            public void onLayoutInflated(WatchViewStub stub) {
                mTextView = (TextView) stub.findViewById(R.id.text);
                mTextView.setText(String.valueOf(new Date()));
            }
        });
    }
}

2)activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.WatchViewStub
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/watch_view_stub"
    android:layout_width="match_parent" android:layout_height="match_parent"
    app:rectLayout="@layout/rect_activity_main" app:roundLayout="@layout/round_activity_main"
    tools:context=".MainActivity"
    tools:deviceIds="wear"></android.support.wearable.view.WatchViewStub>

 

3)round_activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context=".MainActivity"  tools:deviceIds="wear_round">

    <TextView android:id="@+id/text" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" android:text="@string/hello_round" />
</RelativeLayout>

 

4)rect_activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:orientation="vertical"
    tools:context=".MainActivity" tools:deviceIds="wear_square">

    <TextView android:id="@+id/text" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="@string/hello_square" />
</LinearLayout>

Thanks,
Manish




Thursday, April 2, 2015

Android App Widgets| App Widgets in Android | Create App Widgets in Android

Hello Friends,

Today I am here with new learning "how to create widgets for your application"
like you see calender, calculator, Facebook, whether widgets on your phone in widget section.
It is very simple to create your own app widget, follow below step to make it done-




1)Create a demo project i.e.- AppWidgetDemo

2)Create a Widget Provider for  your application i.e.- MyProvider.java


package com.androidhub4you.app.widget;

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

public class MyProvider extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {

        // Get all component
        ComponentName thisWidget = new ComponentName(context, MyProvider.class);
        int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
        for (int widgetId : allWidgetIds) {

            //set the remote view to widget
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                    R.layout.activity_my_widget);
            // Set the text to textview you change it in runtime
            remoteViews.setTextViewText(R.id.my_text, "Manish");

            // Intent to set dynamic vaalues to views
            Intent intent = new Intent(context, MyProvider.class);

            intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
            intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);

            PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
                    0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            remoteViews.setOnClickPendingIntent(R.id.my_text, pendingIntent);
            appWidgetManager.updateAppWidget(widgetId, remoteViews);
        }
    }
}

3)Create a widget layout for your app inside res/layout/activity_my_widget.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/my_shape"
    tools:context="com.androidhub4you.app.widget.MainActivity" >

    <ImageView
        android:id="@+id/my_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/widget_logo" />

    <TextView
        android:id="@+id/my_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/my_image"
        android:layout_margin="2dp" />

</RelativeLayout>

4)Create an appwidget-provider inside res/xml/my_widget.xml

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/activity_my_widget"
    android:minHeight="60dp"
    android:minWidth="400dp"
    android:updatePeriodMillis="200000" >

</appwidget-provider>

5)For the good look for you widgets create a shape inside res/drawable/my_shape.xml

<?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="@android:color/white" />

    <gradient
        android:angle="225"
        android:endColor="@android:color/background_dark"
        android:startColor="@android:color/background_light" />

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

</shape>

6)and inside your manifest.xml call your reciver-

   <receiver
            android:name="MyProvider"
            android:icon="@drawable/widget_logo"
            android:label="My Widget Demo" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

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


Reference URL-
https://developer.android.com/guide/topics/appwidgets/index.html

DOWNLOAD FULL CODE


Thanks,
Manish

Thursday, December 4, 2014

Android Zip Unzip a Folder Demo | Unzip to a zip file in Android | Code for unzip a file in android

Hello Friends,

Today I am going to share code for unzip a file into android phone sd-card. For that I am using File chooser to select a zip file then using ZipInputStream I convert it into unzip file.

Reference- https://github.com/iPaulPro/aFileChooser


Below is the source code, you can download zip code too from below download link-

1)MainActivity.java-

package com.manish.androidhub4you.zip.unzip;

import java.io.File;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.ipaulpro.afilechooser.utils.FileUtils;

public class MainActivity extends Activity implements OnClickListener{

       private static final int PICKFILE_RESULT_CODE = 0;
       private String mFilePath;
       private Button mButtonChoose;
       private  String mDestinationFile =CommonMethod.unzipDestination.toString()+"/";

       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              mButtonChoose=(Button)findViewById(R.id.button_choose);
             
              mButtonChoose.setOnClickListener(this);
             
       }
      
       @Override
       public void onClick(View v) {
              // TODO Auto-generated method stub
              switch(v.getId()){
              case R.id.button_choose:
                     mShowChooser();
                     break;
                    
              }
             
       }
      
      
       /*
        * (non-Javadoc)
        * @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
        */
       protected void onActivityResult(int requestCode, int resultCode, Intent data) {
              super.onActivityResult(requestCode, resultCode, data);

              if (resultCode != RESULT_OK) {

                     return;
              }
              switch (requestCode) {
             
              case PICKFILE_RESULT_CODE:
                     // If the file selection was successful
                     if (resultCode == RESULT_OK) {
                           if (data != null) {
                                  // Get the URI of the selected file
                                  final Uri uri = data.getData();

                                  try {
                                         // Create a file instance from the URI
                                         final File file = FileUtils.getFile(uri);
                                         mFilePath = file.getAbsolutePath();

                                         if (uri != null) {
                                                 if(CommonMethod.unzipDestination.exists()==false) {
                                                        CommonMethod.unzipDestination.mkdirs();
                                             }
                                                Toast.makeText(MainActivity.this,"File Selected: " + mFilePath,Toast.LENGTH_LONG).show();
                                                 CommonMethod.mUnpackZipFile(mFilePath,mDestinationFile);
                                         }
                                        
                                        
                                  } catch (Exception e) {
                                         Log.e("FileSelectorTestActivity", "File select error",e);
                                  }
                           }
                     }
                     break;
              }
}
      
       /**
        * method for open a chooser to choose zip file
        */
       private void mShowChooser() {
              // Use the GET_CONTENT intent from the utility class
              Intent target = FileUtils.createGetContentIntent();
              // Create the chooser Intent
              Intent intent = Intent.createChooser(target,
                           getString(R.string.choose_file));
              try {
                     startActivityForResult(intent, PICKFILE_RESULT_CODE);
              } catch (ActivityNotFoundException e) {
                     // The reason for the existence of aFileChooser
              }

  }

      
}

2)CommonMethod.java-


package com.manish.androidhub4you.zip.unzip;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
 *
 * @author manish
 *
 */
public class CommonMethod {
      
       public static File root = android.os.Environment.getExternalStorageDirectory();

       public static File unzipDestination = new File(root.getAbsolutePath() + "/Androidhub4you/UNZIP");
      
/**
 *
 * @param mArchivePath
 * @param mZipname
 * @param mOutPutStream
 * @return
 */
        public static boolean mUnpackZipFile(String mArchivePath,String mOutPutStream) { 
                InputStream inputstream; 
                ZipInputStream zipinputstream; 
                try
                 String filename; 
                 inputstream = new FileInputStream(mArchivePath); 
                 zipinputstream = new ZipInputStream(new BufferedInputStream(inputstream)); 
                 ZipEntry mZipEntry; 
                 byte[] buffer = new byte[1024]; 
                 int count; 
               
                 while ((mZipEntry = zipinputstream.getNextEntry()) != null) { 
                  filename = mZipEntry.getName(); 
               
                  if (mZipEntry.isDirectory()) { 
                   File fmd = new File(mOutPutStream + filename); 
                   fmd.mkdirs(); 
                   continue
                  } 
               
                  FileOutputStream fileoutputstream = new FileOutputStream(mOutPutStream + filename); 
               
                  while ((count = zipinputstream.read(buffer)) != -1) { 
                   fileoutputstream.write(buffer, 0, count); 
                  } 
                 
                
                  fileoutputstream.close(); 
                  zipinputstream.closeEntry(); 
                 } 
               
                 zipinputstream.close(); 
                } catch (IOException e) { 
                 e.printStackTrace(); 
                 return false
                } 
               
                return true
               } 
               

}

3)activity_main.xml-

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button_choose"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="44dp"
        android:text="Choose file to unzip" />

</RelativeLayout>

3)manifest.xml-

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.manish.androidhub4you.zip.unzip"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
   
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
       <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.manish.androidhub4you.zip.unzip.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
        <activity
            android:name="com.ipaulpro.afilechooser.FileChooserActivity"
            android:exported="false" >
            <intent-filter>
                <action android:name="android.intent.action.GET_CONTENT" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.OPENABLE" />

                <data android:mimeType="*/*" />
            </intent-filter>
        </activity>
       
    </application>

</manifest>


DOWNLOAD-ZIP-CODE

Thanks,
Manish