Sunday, December 3, 2017

Emulator is already running

Emulator is already running:

Android Studio : emulator is already running error shown while run the project using AVD.
In that error popup shows the error and solution, The error is "If that is not the case,delete the files at ....path...... "

Go to the path in first image......







Solution:

You don't have to completely delete the emulator when this happens. The files to delete should have a ".lock" extension:

Broadcast Receiver In Android

Broadcast Receivers simply respond to broadcast messages from other applications or from the system itself. 
These messages are sometime called events or intents. For example, applications can also initiate broadcasts 
to let other applications know that some data has been downloaded to the device and is available for
them to use, so this is broadcast receiver who will intercept this communication and will initiate appropriate action.

Two important steps to make BroadcastReceiver works for the system broadcasted intents.


  • Creating the Broadcast Receiver.
  • Registering Broadcast Receiver



one additional steps in case you are going to implement your custom intents then you will have to create and broadcast those intents.

Creating the Broadcast Receiver:

A broadcast receiver is implemented as a subclass of BroadcastReceiver class and overriding the onReceive() method where each message is received as a Intent object parameter.

public class MyReceiver extends BroadcastReceiver {
   @Override
   public void onReceive(Context context, Intent intent) {
      Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
   }
}

Registering Broadcast Receiver:

An application listens for specific broadcast intents by registering a broadcast receiver in AndroidManifest.xml file. 
Consider we are going to register MyReceiver for system generated event ACTION_BOOT_COMPLETED which 
is fired by the system once the Android system has completed the boot process.


Example:

<application
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@style/AppTheme" >
   <receiver android:name="MyReceiver">
   
      <intent-filter>
         <action android:name="android.intent.action.BOOT_COMPLETED">
         </action>
      </intent-filter>
   
   </receiver>
</application>



android.intent.action.BATTERY_CHANGED
Sticky broadcast containing the charging state, level, and other information about the battery.

android.intent.action.BATTERY_LOW
Indicates low battery condition on the device.

android.intent.action.BATTERY_OKAY
Indicates the battery is now okay after being low.

android.intent.action.BOOT_COMPLETED
This is broadcast once, after the system has finished booting.

android.intent.action.BUG_REPORT
Show activity for reporting a bug.

android.intent.action.CALL
Perform a call to someone specified by the data.

android.intent.action.CALL_BUTTON
The user pressed the "call" button to go to the dialer or other appropriate UI for placing a call.

android.intent.action.DATE_CHANGED
The date has changed.

android.intent.action.REBOOT
Have the device reboot.


Example:

package com.android.androidvedha.myapplication;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

   /** Called when the activity is first created. */
   @Override
   
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }


   // broadcast a custom intent.
      
   public void broadcastIntent(View view){
      Intent intent = new Intent();
      intent.setAction("com.android.CUSTOM_INTENT"); 
      sendBroadcast(intent);
   }
}


Following is the content of MyReceiver.java:

package com.android.androidvedha.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;


public class MyReceiver extends BroadcastReceiver{
   @Override
   public void onReceive(Context context, Intent intent) {
      Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
   }
}



Following will the modified content of AndroidManifest.xml file. Here we have added <receiver.../> tag to include our service:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.android.androidvedha.myapplication">

   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">

      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   
      <receiver android:name="MyReceiver">
         <intent-filter>
            <action android:name="com.android.CUSTOM_INTENT">
            </action>
         </intent-filter>

      </receiver>
   </application>

</manifest>

Ripple

Ripple:

Ripple Effect in android, this effort is look awesome when the user touch the button or layout

First download RippleView.java file from here

After download this file and put into package folder,so we don't need to use library for rippleview in android.




  1. Include the file in package folder in your project.
  2. Include the RippleView widget in your layout.
             <com.android.androidVedha.RippleView
                     android:id="@+id/btn"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
                     ripple:alphaFactor="0.7"
                    ripple:rippleColor="#58FAAC" />
  1. In your onCreate method refer to the View and add 'OnClickListener' for the same.
               mButton = (RippleView) findViewById(R.id.btn);
               mButton.setOnClickListener(new View.OnClickListener() {
          @Override
         public void onClick(View v) {
         //your code
         }
             });

Saturday, December 2, 2017

Set the Date Picker with the current date for the first click and selected date for second click

DatePicker with Current Date for First click and Selected date for Second Click:

Hi Guys! In this Tutorial we are going to see about DatePicker  first open with current date and then second time click show  selected date .

Example:

public class MainActivity extends AppCompatActivity {

private int year;
private int month;
private int day;
private EditText signup_bday;

@Override
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

signup_bday=(EditText)findViewById(R.id.edittext_signup_birthday);

signup_bday.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
showDatePickerDialog(signup_bday.getText().toString());
}
});
}

private void showDatePickerDialog(String date) {
if (date.contentEquals("")) {
Calendar mcurrentDate=Calendar.getInstance();
year=mcurrentDate.get(Calendar.YEAR);
month=mcurrentDate.get(Calendar.MONTH);
day=mcurrentDate.get(Calendar.DAY_OF_MONTH);
}else{
String[] split = date.split("-");
day = Integer.valueOf(split[0]);
int montx = Integer.valueOf(split[1]);
month = montx -1;
year = Integer.valueOf(split[2]);
}

DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int curyear, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
signup_bday.setText(new StringBuilder().append(dayOfMonth).append("-").append(monthOfYear + 1).append("-").append(curyear));
}
};

DatePickerDialog datePickerDialog = new DatePickerDialog(this,
dateSetListener, year, month, day);
datePickerDialog.show();
}
}

Friday, December 1, 2017

CircularImageView

CircularImageView:

In android, Normally we have use Imageview to show the image in the activity,but now CircularImageView is used to show the image as circular, Most probably we have to use circularImageView in profile activity.  It show very differently and programmer easily implement using following ways.

Step 1:

Download the CircularImageView.java file from here
 Download CircularImageView.java

Step 2:
Place the Java File in your Package then Goto xml file


<com.androidvedha.external.CircularImageView  
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/profile_image"
    android:layout_width="96dp"
    android:layout_height="96dp"
    android:src="@drawable/profile"
    app:civ_border_width="2dp"
    app:civ_border_color="#FF000000"/>

Step 3:

In onCreate() method do FindViewByID and then we can make click for the circularImageView using setOnClickListener method.

TriangleLabelView

TriangleLabelView:

               In android, Normally we have use textview to show the text in the activity,but now TriangleLabelView is used to show the label in the any one of the corner in the layout, That is top left corner, top right corner likewise bottom left corner and bottom right corner. It show very differently and programmer easily implement using following ways.

Step 1:

Download the TriangleLabelView.java file from here
 Download TriangleLabelView.java

Step 2:
Place the Java File in your Package then Goto xml file


<com.androidvedha.external.TriangleLabelView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    app:backgroundColor="@color/yellow_900"
    app:corner="leftTop"
    app:labelBottomPadding="5dp"
    app:labelCenterPadding="0dp"
    app:labelTopPadding="10dp"
    app:primaryText="New"
    app:primaryTextColor="@color/yellow_500"
    app:primaryTextSize="16sp"
    app:secondaryText="01"
    app:secondaryTextColor="@color/yellow_100"
    app:secondaryTextSize="11sp" />


Step 3:

In onCreate() method do FindViewByID and then we can make click for the triangleLabelView using setOnClickListener method.

Persistent -Non Persistent In Android

Persistent and Non-Persistent in android:

Issue :
         I had met an problem,When the android mobile sleep and wake up time once again activity restart (ie) call onCreate() method,In my onCreate() method i had called the api to get the data and put my mobile as well don't disturb it automatically go to the sleep state the i had click the power button to wake up device in that time once again its called onCreate() method .


Solution: 

Play with the manifest to achieve this and also understand what exactly activity is, in Android eco system,In Android activity is a task which has a pre defined work. I found that, we can configure activity in two ways,
  • Persistent
  • Non persistent
if you mention for the activity in the manifest as

android:persistent="true"

and run the below use case

Start the APP
Press back or home button
you select the activity in the back stack again to bring it to front
Activity enters start -> pause -> stop - > resume , it does not get into onDestroy method.

if do not mention

android:persistent="true"
for the same use case

Activity enters start -> pause -> stop -> destroy, and if you select the activity from the back stack.

Activity enters resume->create->start

If you want to run a service/task on activity start which keeps running when the app is in back stack, then you have to start that in the onCreate method, and kill them onDestroy by specifying your activity as persistent in manifest.

I hope my above solution might help others who arrive here for the same problem