(click images for a larger view)
Home » Archives for 05/31/12
Renault Laguna Coupe Monaco GP Limited Edition
V6 / 3.498 cc / 240 PS / 244 ft/lb (330 Nm) @ 4.400 / 0 - 62 mph (100 km/h): 7,4 s / Vmax: 152 mph (244 km/h)
(click images for a larger view)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_s9F2FXeu1xBQw3QINhl7kHe5kv7ZfzQRjet8pzQC_qnsPCswakH-xcAw40Njh4Af1c8g0jeR1igEpjxdF_LSd1xKvnrK_foR_Y2ekhtGKS1E5WXO9A-xSwqCS3e40WQXCleHV0roQ=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_uC4rC09koC4e8TLXOmQElWG2U-W1ligt4iqZcfdCRo-fYx6LKPE7ECMmfNuO6CKlMfHT9jArGfNAnqS1oBx6ksiblyiNVg2O2wN0Zs79fjgYFf4RXQMHuLz46HgHoBzvz9mGTwlnk=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sTHrE6vm8UEHZrcQRbDAAgJ0txNl1Wa7HI4_ml2qEOAYYTQMXvJYaZjJ55Gb7-_aObHA_sgPUIxqeJ1qit___hz3dSVhPEQyO3G3Tyi4KATE2jgB2e7NatqSwgwTZc5rFfzH7QQ2s=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_usUrauqXDygxfQ3rXPClIUAl0rCn0OUu2GroFy6wlPPY13ttW_1SsGTjmLkCgxdj3vL7ifL4bO8_j8uPhC7xN2c-zO2-Imd2DjLHaGk9BTt5F7H2zDGaAyCI64Jrc-q3tjssXUQ4o=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_tcUdb6WTg15BqvD-1dzdJmX7JsjLbJabWbBvwgJUmHcaq_SYBzwLOLcwhbsSTnwI1daDh5MqpGP_f_H5nQOeTviiSXpOPV_BTC6as-vgbtAIbLJkH0vneHKwVENobX1SWjYVFm=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_ulx2DRQRTd1o9LBZx03JSeO-200EgYOByNzK28BajOQuYT6y5EH85_UfD6zPKXi_RAajVPLJPAuCmlfjR2u4LIqCi6coERUFiFVbfZj6ULjYMOa-8Xf8QBoEDlNGccc_JF9in9xWoG=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vA7SUH6o8WLanDhw4GQe2QCVUyguw9CYbmED1BwcV65aZwa5p2Vy0Bgqp_ktRa94VfPvwa-1RNrjWOsCpL3DLYLvHf22tv8zvjTTiDvldhEg8zQGUkaA4wEoArVZKxL5LqOZhe=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vctQWWWbNlkYVSt_XcfUHjwFfoN-5mmWPYbv-IJ9XNg6mEQVaLUIwji6puLKtL0RRpKB9YSU5XYcOhjVyPny855oKD76W9kxxRlGhx9B3-CDsyMrsUIXNnPhsQlNy-hEcHQ6G8KQ=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_uSEA9BP1HINk7LDaZdM91ACNVbWO7YhoKiOL5LRGgZJcf_Lr9loq9Kh3RCLS_uQJoB8mOXistoqJAmVu8AVjO-ji0aM0DFJDQSCdEtm0VZS8R62eFDgePJ2zpiatEvTtGI104uvvM=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_tqGklukIlPqjJZjYpc0yM25Zbhu-uYgSdrLqohzP4QnkOh5wWH931Zj3JjZijH-_kuuh5ORLFryFY0hCzzr6BnoPrOVaqXxzOkPwbSIO_-Il_Y_9o-7WMrgBLHVE007HXSvwE=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_u_B9fI2yEu4muHPZUpSys5597Ys_5MPEc8otAaqHz1kiJUwXfz77x7a-fB6ab0a26bO6kis5wTUdhWXxjupRgE1Z9Xrd5UsVyb_jCG6hiLuNWecBZcMCgxocfHNpWjadl7M1mONOg=s0-d)
(click images for a larger view)
Vibrate with a given pattern
Last exercise demonstrate basic of android.os.Vibrator. The method vibrate (long[] pattern, int repeat) of Vibrator cause vibrate with a given pattern.
main.xml
"android.permission.VIBRATE" is needed.
package com.exercise.AndroidVibrator;
import android.app.Activity;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
public class AndroidVibratorActivity extends Activity {
Button buttonVibrate1, buttonVibrate2, buttonVibrate3;
Vibrator myVibrator;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
buttonVibrate1 = (Button)findViewById(R.id.buttonVibrate1);
buttonVibrate2 = (Button)findViewById(R.id.buttonVibrate2);
buttonVibrate3 = (Button)findViewById(R.id.buttonVibrate3);
myVibrator = (Vibrator)getSystemService(AndroidVibratorActivity.VIBRATOR_SERVICE);
buttonVibrate1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myVibrator.vibrate(500);
}});
buttonVibrate2.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN){
myVibrator.vibrate(1000);
}else if(action == MotionEvent.ACTION_UP){
myVibrator.cancel();
}
return true;
}});
buttonVibrate3.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN){
long[] pattern = {
50, //Off before vibration
100, 100, //on-off
100, 1000, //on-off
};
myVibrator.vibrate(pattern, 0); //repeat from pattern[0]
}else if(action == MotionEvent.ACTION_UP){
myVibrator.cancel();
}
return true;
}});
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<Button
android:id="@+id/buttonVibrate1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Vibrate for 500ms" />
<Button
android:id="@+id/buttonVibrate2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Touch to Vibrate (max. 1 sec.)" />
<Button
android:id="@+id/buttonVibrate3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Touch to Vibrate Pattern" />
</LinearLayout>
"android.permission.VIBRATE" is needed.
Porsche 911 (997) Targa 4S
B6 / 3.800 cc / 385 PS / 310 lb/ft (420 Nm) @ 4.400 / 0 - 62 mph (100 km/h): 4,9 s / 0 - 100 mph (160 km/h): 10,4 s / Vmax: 185 mph (297 km/h)
(click images for a larger view)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_veI4lK78f21I2pxf17aeE8H77eC_tfQ9yYCU883zVg9w4B_4j6A9HZnU0lp87Eiq4g2AUT4Nc0pZNhVzbGm75xsodFJP8VsFGXr3Iw3EDxUzJKRfhmfQVv6oNm4Irm1pc=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sTM11x9XApJbxTDHymMrim0EU6699oBSQHFcOk1e_TW0gBhs1rlITo8ik-ySAz3p3iRFlYSMjT83-VNlIsrXtmGWAMNbNHcYECKF4QS0gkE8j15BO-C1PBD04-k6yM05hD=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vo5fjEjmcZkSsvB0GA4f5EFOKwdmFnQHhYpifTp4PDKSiznOkI2Mi7xgUtcFvfgvqAQzuUDNbbYEbtDGYBidJHDtw2rX4SOf5yvBYFfEwV4Y13EEg6SqZeOAYiqH89Qw=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vsFOUOmOSMdMLXnqH0hpGpPPehypTgDkXPt_CIoww5TtNY4pG0r6DNM2DlcDUwnd-DpHyhrTEwW1RKcKEi7tedeXw758OOFsy5C73HlmlBqxQFDDx02id6AbAkfSpvF0v4=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_smeDPglWrOQxQvmep9MjVC6p7IbDbDr-i4URG2Zvw3mQR4TbncXlGBogKhPpDbn6PLlRi3_SJSYx4cvjKGGrptuGQUhwkdu9V16ZHWKq7V01RGW5c4ZDKNhEx4gIb66T4=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_uDKnTFZYMH2l7X3LgyOzENPaLoicsDGjfZ8aHuRhLmgTe2BssK5VIlry89ecnrJNqc5D16N0b1A0sVO5eUdH-SUoJVN4NJJ8iMZSi3co2DWKSRmstioHNclzQVk4Q9xg=s0-d)
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vxmPehFUfCG31Kc-097_Uf97CCnDMvNrvjy8_sS3EfMsjm5oqL0ew2kLyXsqdDye2LPj7-XAy9rb71p-wJznT8KWrDB-I5WdY0MxdsSP3ILK99SYkSDTYstRspJDgACPJt=s0-d)
(click images for a larger view)
Program Android Vibrator
android.os.Vibrator operates the vibrator on the device.
Your code call getSystemService(AndroidVibratorActivity.VIBRATOR_SERVICE) to retrieve a Vibrator for interacting with the vibration hardware. In the example, touch on button1 to generate vibration for 500ms. Touch and hold on button2 to generate vibration for max 1 second, or release to stop.
You have to modify AndroidManifest.xml to add permission of "android.permission.VIBRATE".
Next:
- Vibrate with a given pattern
Your code call getSystemService(AndroidVibratorActivity.VIBRATOR_SERVICE) to retrieve a Vibrator for interacting with the vibration hardware. In the example, touch on button1 to generate vibration for 500ms. Touch and hold on button2 to generate vibration for max 1 second, or release to stop.
You have to modify AndroidManifest.xml to add permission of "android.permission.VIBRATE".
package com.exercise.AndroidVibrator;
import android.app.Activity;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
public class AndroidVibratorActivity extends Activity {
Button buttonVibrate1, buttonVibrate2;
Vibrator myVibrator;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
buttonVibrate1 = (Button)findViewById(R.id.buttonVibrate1);
buttonVibrate2 = (Button)findViewById(R.id.buttonVibrate2);
myVibrator = (Vibrator)getSystemService(AndroidVibratorActivity.VIBRATOR_SERVICE);
buttonVibrate1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myVibrator.vibrate(500);
}});
buttonVibrate2.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN){
myVibrator.vibrate(1000);
}else if(action == MotionEvent.ACTION_UP){
myVibrator.cancel();
}
return true;
}});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<Button
android:id="@+id/buttonVibrate1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Vibrate for 500ms" />
<Button
android:id="@+id/buttonVibrate2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Touch to Vibrate (max. 1 sec.)" />
</LinearLayout>
Next:
- Vibrate with a given pattern