In this tutorial we learn How to Vibrate a phone in default manner or in the pattern you want.
What we learn:
Service
Vibrating the Phone
Requires Knowledge:
Basic Android
To vibrate a phone we need following Permission Do not forget to declare this permission in Manifest.
<uses-permission android:name="android.permission.VIBRATE"/>
We can Vibrate a Phone Using an Activity , Service and Using Threads.
Using Activity will not be a good Idea because it takes time to vibrate the Phone and an Activity always runs in foreground.
We will implement using Service because a Service runs in Background.
for we need to have an Object of Class Vibrator, we do not create the Object directly but we get Vibrate System Service.
Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
Add <uses-permission android:name="android.permission.VIBRATE"/> in Your Manifest
So let's start.
Create a new Android Project "Vibrate Phone".
and edit the manifest and main.xml file
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidjuncture.vibrate"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.VIBRATE"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".VibrateMainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Declare the Vibrate Service -->
<service android:name=".VibrateService"/>
</application>
</manifest>
(to be inflated/used in VibrateMainActivity)
<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:background="#99C2D6"
android:orientation="vertical">
<TextView
android:layout_marginTop="140dp"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="Android Vibrate Service Example" />
<Button
android:id="@+id/buttonVibrate"
android:layout_marginTop="20dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Vibrate" />
</LinearLayout>
When User clicks on Vibrate Button we will start a new Service which will vibrate the phone.
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnVibrate=(Button)findViewById(R.id.buttonVibrate);
// Set on click listener and start vibrate service when clicked on Button Vibrate
btnVibrate.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
// Create a New Intent and start the service
Intent intentVibrate =new Intent(getApplicationContext(),VibrateService.class);
startService(intentVibrate);
}
});
}
}
<service android:name=".VibrateService"/>
public class VibrateService extends Service
{
@Override
public void onStart(Intent intent, int startId)
{
// TODO Auto-generated method stub
super.onStart(intent, startId);
Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
// pass the number of millseconds fro which you want to vibrate the phone here we
// have passed 2000 so phone will vibrate for 2 seconds.
v.vibrate(2000);
// If you want to vibrate in a pattern
// long pattern[]={0,800,200,1200,300,2000,400,4000};
// 2nd argument is for repetition pass -1 if you do not want to repeat the Vibrate
// v.vibrate(pattern,-1);
Toast.makeText(getApplicationContext(), "Phone is Vibrating", Toast.LENGTH_LONG).show();
}
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated method stub
return null;
}
}
long pattern[]={0,800,200,1200,300,2000,400,4000}
this is pattern in which we want to Vibrate the Phone
first 0 means silent for 0 milisecond
800 means vibrate for 800 milisecond
200 means means silent for 200 milisecond
1200 means vibrate for 1200 miliseconds
and So On.
What we learn:
Service
Vibrating the Phone
Requires Knowledge:
Basic Android
To vibrate a phone we need following Permission Do not forget to declare this permission in Manifest.
<uses-permission android:name="android.permission.VIBRATE"/>
We can Vibrate a Phone Using an Activity , Service and Using Threads.
Using Activity will not be a good Idea because it takes time to vibrate the Phone and an Activity always runs in foreground.
We will implement using Service because a Service runs in Background.
for we need to have an Object of Class Vibrator, we do not create the Object directly but we get Vibrate System Service.
Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
Add <uses-permission android:name="android.permission.VIBRATE"/> in Your Manifest
So let's start.
Create a new Android Project "Vibrate Phone".
and edit the manifest and main.xml file
manifest file
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidjuncture.vibrate"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.VIBRATE"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".VibrateMainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Declare the Vibrate Service -->
<service android:name=".VibrateService"/>
</application>
</manifest>
main.xml
(to be inflated/used in VibrateMainActivity)
<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:background="#99C2D6"
android:orientation="vertical">
<TextView
android:layout_marginTop="140dp"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="Android Vibrate Service Example" />
<Button
android:id="@+id/buttonVibrate"
android:layout_marginTop="20dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Vibrate" />
</LinearLayout>
When User clicks on Vibrate Button we will start a new Service which will vibrate the phone.
VibrateMainActivity .java
public class VibrateMainActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnVibrate=(Button)findViewById(R.id.buttonVibrate);
// Set on click listener and start vibrate service when clicked on Button Vibrate
btnVibrate.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
// Create a New Intent and start the service
Intent intentVibrate =new Intent(getApplicationContext(),VibrateService.class);
startService(intentVibrate);
}
});
}
}
And The Service Class
Do Not Forget To Declare the Service in Manifest like<service android:name=".VibrateService"/>
public class VibrateService extends Service
{
@Override
public void onStart(Intent intent, int startId)
{
// TODO Auto-generated method stub
super.onStart(intent, startId);
Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
// pass the number of millseconds fro which you want to vibrate the phone here we
// have passed 2000 so phone will vibrate for 2 seconds.
v.vibrate(2000);
// If you want to vibrate in a pattern
// long pattern[]={0,800,200,1200,300,2000,400,4000};
// 2nd argument is for repetition pass -1 if you do not want to repeat the Vibrate
// v.vibrate(pattern,-1);
Toast.makeText(getApplicationContext(), "Phone is Vibrating", Toast.LENGTH_LONG).show();
}
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated method stub
return null;
}
}
Point To Note:
long pattern[]={0,800,200,1200,300,2000,400,4000}
this is pattern in which we want to Vibrate the Phone
first 0 means silent for 0 milisecond
800 means vibrate for 800 milisecond
200 means means silent for 200 milisecond
1200 means vibrate for 1200 miliseconds
and So On.
Brilliant! I'm an experienced developer but new to android. I've looked a loads of other examples of how to do this, but your code is simple and easy to follow.
ReplyDeleteThank you!
Thanks Fizz
DeleteReally helpfull!!!!!!!
ReplyDeleteExtremely helpful! Very concise and clear.
ReplyDeletegood
ReplyDeleteAwesome
ReplyDeletenot working
ReplyDeleteHow to make with checkbox ? Thanks...
ReplyDeleteDoes not work on Android 5.0+
ReplyDeleteI want to add vibration pattern for specfic contact can you please help me with this..??
ReplyDeleteAwesome post. Thank you so much.
ReplyDeleteandroid development company in chennai
Thanks for sharing this valuable content. In my view, if all webmasters and bloggers made good content as you did, the web will be a lot more useful than ever before. Voyance telephone
ReplyDeleteVery nice article
ReplyDeleteairtel recharge list
Wow, What a Excellent post. I really found this to much informatics. It is what i was searching for.I would like to suggest you that please keep sharing such type of info.Thanks Onida Customer Care
ReplyDeleteMyPhonePackages.Com
ReplyDeleteThank you again for all the knowledge you distribute,Good post. I was very interested in the article, it's quite inspiring I should admit. I like visiting you site since I always come across interesting articles like this one.Great Job, I greatly appreciate that.Do Keep sharing! Regards, Phone spy
ReplyDeleteI found your this post while searching for some related information on blog search...Its a good post..keep posting and update the information. spy phone app
ReplyDeleteCell phones have become a significant piece of our lives.Display reparatur
ReplyDeleteAnupama is an Indian drama television series produced by Ekta Kapoor's Anupama delayed check out the new premiere date India Today.
ReplyDeleteAnupama Full Episode