Android中所有的服务使用

希望通过这篇一个Demo学完Android中所有的服务对对广大读者有所帮助。

说明:这个例子实现了Android中常见的许多服务,下面是实现的截图



接下来,以源代码的方式分析这个例子

1.MainActivity--主界面

这个类主要是实现用户所看到的这个Activity,其中包含了一系列的按钮,用户点击按钮执行相应的动作,所以在这个类中主要是对按钮的定义和对按钮绑定相应的监听器,下面是实现的代码:

    package lovefang.stadyService;   
       
    import android.app.Activity;   
    import android.os.Bundle;   
    import android.widget.Button;   
    import android.view.View;   
    import android.content.Intent;   
    import android.util.Log;   
    /**这是使用后台服务的学习例子*/   
    public class MainStadyServics extends Activity {   
            /**参数设置*/   
        Button startServiceButton;// 启动服务按钮   
        Button shutDownServiceButton;// 关闭服务按钮   
        Button startBindServiceButton;// 启动绑定服务按钮   
        Button sendBroadcast;// 使用广播   
        Button notificationButton;// 使用通知功能   
        Button alarmButton;// 使用闹钟   
        Button handlerButton;// 使用handler   
        Button asyncButton;// 使用异步加载   
        Button phoneStateButton;// 查看手机状态   
        Button callphoneButton;// 拨打电话   
        Button vibratorButton;// 使用震动    
        CountService countService;   
           
        @Override   
        public void onCreate(Bundle savedInstanceState) {   
            super.onCreate(savedInstanceState);   
            Log.v("MainStadyServics", "setContentView");   
            setContentView(R.layout.main);   
            getWidget();   
            regiestListener();   
        }   
            /**获得组件*/   
        public void getWidget(){   
            startServiceButton = (Button)findViewById(R.id.startServerButton);   
            startBindServiceButton = (Button)findViewById(R.id.startBindServerButton);   
            shutDownServiceButton = (Button)findViewById(R.id.sutdownServerButton);   
            sendBroadcast = (Button)findViewById(R.id.sendBroadcast);   
            notificationButton = (Button)findViewById(R.id.notification);   
            alarmButton = (Button)findViewById(R.id.alarm);   
            handlerButton = (Button)findViewById(R.id.handler);   
            asyncButton = (Button)findViewById(R.id.async);   
            phoneStateButton = (Button) findViewById(R.id.phonestate);   
            callphoneButton = (Button) findViewById(R.id.callphone);   
            vibratorButton = (Button) findViewById(R.id.vibrator);   
        }   
            /**为按钮添加监听*/   
        public void regiestListener(){   
            startServiceButton.setOnClickListener(startService);   
            shutDownServiceButton.setOnClickListener(shutdownService);   
            startBindServiceButton.setOnClickListener(startBinderService);   
            sendBroadcast.setOnClickListener(broadcastReceiver);   
            notificationButton.setOnClickListener(notification);   
            alarmButton.setOnClickListener(startAlarm);   
            handlerButton.setOnClickListener(handler);   
            asyncButton.setOnClickListener(async);   
            phoneStateButton.setOnClickListener(phonestate);   
            callphoneButton.setOnClickListener(callphoneEvent);   
            vibratorButton.setOnClickListener(vibrator);   
        }   
            /**启动服务的事件监听*/   
        public Button.OnClickListener startService = new Button.OnClickListener(){   
            public void onClick(View view){   
                    /**单击按钮时启动服务*/   
                Intent intent = new Intent(MainStadyServics.this,CountService.class);   
                startService(intent);   
                Log.v("MainStadyServics", "start Service");   
            }   
        };   
            /**关闭服务*/   
        public Button.OnClickListener shutdownService = new Button.OnClickListener(){   
            public void onClick(View view){   
                    /**单击按钮时启动服务*/   
                Intent intent = new Intent(MainStadyServics.this,CountService.class);   
                    /**退出Activity是,停止服务*/   
                stopService(intent);   
                Log.v("MainStadyServics", "shutDown serveice");   
            }   
        };   
            /**打开绑定服务的Activity*/   
        public Button.OnClickListener startBinderService = new Button.OnClickListener(){   
            public void onClick(View view){   
                    /**单击按钮时启动服务*/   
                Intent intent = new Intent(MainStadyServics.this,UseBrider.class);   
                startActivity(intent);   
                Log.v("MainStadyServics", "start Binder Service");   
            }   
        };   
            /**打开广播学习的按钮*/   
        public Button.OnClickListener broadcastReceiver = new Button.OnClickListener(){   
            public void onClick(View view){   
                Intent intent = new Intent(MainStadyServics.this,UseBroadcast.class);   
                startActivity(intent);   
                Log.v("MainStadyServics","start broadcast");   
            }   
        };   
            /**打开通知*/   
        public Button.OnClickListener notification = new Button.OnClickListener(){   
            public void onClick(View view){   
                Intent intent = new Intent(MainStadyServics.this, UseNotification.class);   
                startActivity(intent);   
                Log.v("MainStadyService ","start Notification");   
                   
            }   
        };   
            /**使用闹钟*/   
        public Button.OnClickListener startAlarm = new Button.OnClickListener(){   
            public void onClick(View view){   
                Intent intent = new Intent(MainStadyServics.this, UseAlarmManager.class);   
                startActivity(intent);   
                Log.v("MainStadyService ","start alarm");   
                   
            }   
        };   
        public Button.OnClickListener handler= new Button.OnClickListener(){   
            public void onClick(View view){   
                Intent intent = new Intent(MainStadyServics.this, UseHandleMessage.class);   
                startActivity(intent);   
                Log.v("MainStadyService ","start handle");   
            }   
        };   
        public Button.OnClickListener async= new Button.OnClickListener(){   
            public void onClick(View view){   
                Intent intent = new Intent(MainStadyServics.this, UseAsyncTask.class);   
                startActivity(intent);   
                Log.v("MainStadyService ","start handle");   
            }   
        };   
        public Button.OnClickListener phonestate= new Button.OnClickListener(){   
            public void onClick(View view){   
                Intent intent = new Intent(MainStadyServics.this, UsePhoneState.class);   
                startActivity(intent);   
                Log.v("MainStadyService ","start phonestate");   
            }   
        };   
        public Button.OnClickListener callphoneEvent= new Button.OnClickListener(){   
            public void onClick(View view){   
                Intent intent = new Intent(MainStadyServics.this, UseActionCall.class);   
                startActivity(intent);   
                Log.v("MainStadyService ","start callphone");   
            }   
        };   
        public Button.OnClickListener vibrator= new Button.OnClickListener(){   
            public void onClick(View view){   
                Intent intent = new Intent(MainStadyServics.this, UseVibrator.class);   
                startActivity(intent);   
                Log.v("MainStadyService ","start callphone");   
            }   
        };   
            /***/   
        protected void onDestroy(){   
            super.onDestroy();   
            Intent intent = new Intent(MainStadyServics.this,CountService.class);   
                /**退出Activity是,停止服务*/   
            stopService(intent);   
        }   
               
           
    }   

2.启动服务按钮

这个类实现的是第一个按钮的功能,在这个类中新开了一个线程,并每隔一秒打印出一行日志

代码如下:

    package lovefang.stadyService;   
    /**引入包*/   
        import android.app.Service;// 服务的类   
        import android.os.IBinder;   
        import android.os.Binder;   
        import android.content.Intent;   
        import android.util.Log;   
    /**计数的服务*/   
        public class CountService extends Service{   
                /**创建参数*/   
            boolean threadDisable ;   
            int count;   
               
            public IBinder onBind(Intent intent){   
                return null;   
            }   
            public void onCreate(){   
                super.onCreate();   
                    /**创建一个线程,每秒计数器加一,并在控制台进行Log输出*/   
                new Thread(new Runnable(){   
                    public void run(){   
                        while(!threadDisable){   
                            try{   
                                Thread.sleep(1000);   
                            }catch(InterruptedException e){   
                                   
                            }   
                            count++;   
                            Log.v("CountService","Count is"+count);   
                        }   
                    }   
                }).start();   
            }   
            public void onDestroy(){   
                super.onDestroy();   
                    /**服务停止时,终止计数进程*/   
                this.threadDisable = true;   
            }   
            public int getConunt(){   
                return count;   
            }   
            class ServiceBinder extends Binder{   
                public CountService getService(){   
                    return CountService.this;   
                }   
            }   
        }   

3.绑定服务

服务有两种实现的方法:

(1)startService,启动服务,这时需要程序员管理服务的生命周期

(2)bindService,绑定服务,此时Service与Activity绑定在一起

下面是实现的代码:

    package lovefang.stadyService;   
    /**引入包*/   
        import android.app.Activity;   
        import android.content.ComponentName;   
        import android.content.Context;   
        import android.content.Intent;   
        import android.content.ServiceConnection;   
        import android.os.Bundle;   
        import android.os.IBinder;   
        import android.util.Log;   
       
    /**通过bindService和unBindSerivce的方式启动和结束服务*/   
        public class UseBrider extends Activity {   
                /**参数设置*/   
            CountService countService;   
           
            @Override   
            public void onCreate(Bundle savedInstanceState) {   
                super.onCreate(savedInstanceState);   
                setContentView(new UseBriderFace(this));   
                Intent intent = new Intent(UseBrider.this,CountService.class);   
                    /**进入Activity开始服务*/   
                bindService(intent, conn, Context.BIND_AUTO_CREATE);   
                   
            }   
            private ServiceConnection conn = new ServiceConnection(){   
                    /**获取服务对象时的操作*/    
                public void onServiceConnected(ComponentName name, IBinder service) {   
                    // TODO Auto-generated method stub   
                    countService = ((CountService.ServiceBinder)service).getService();   
                       
                }   
                    /**无法获取到服务对象时的操作*/   
                public void onServiceDisconnected(ComponentName name) {   
                    // TODO Auto-generated method stub   
                    countService =null;   
                }   
                   
                   
            };   
            protected void onDestroy(){   
                super.onDestroy();   
                this.unbindService(conn);   
                Log.v("MainStadyServics", "out");   
            }   
        }   

4.发送广播

使用sendBroadcast,向一个Action发送广播,并由相应的广播接收器接收并执行相应的动作

实现的代码如下:

   (1)打开广播服务

    package lovefang.stadyService;   
    /**引入包*/   
        import android.view.View;   
        import android.os.Bundle;   
        import android.app.Activity;   
        import android.content.Intent;   
        import android.widget.Button;   
    /**使用Broadcast,这是一个发送广播的类*/   
        public class UseBroadcast extends Activity{   
                /**创建参数*/   
            private Button sendBroadcast;   
                /**创建Activity*/   
            public void onCreate(Bundle savedInstanceState){   
                super.onCreate(savedInstanceState);   
                setContentView(R.layout.broadcast);// 使用布局文件   
                getView();   
                sendBroadcast.setOnClickListener(sendBroadcastClick);// 添加事件监听   
            }   
            public void getView(){   
                sendBroadcast = (Button)findViewById(R.id.sendBroadcast);   
            }   
                /**创建事件监听*/   
            public Button.OnClickListener sendBroadcastClick = new Button.OnClickListener(){   
                public void onClick(View view){   
                    Intent intent = new Intent();// 创建意图   
                    intent.putExtra("CONTENT",  "This is a Braodcast demo");// 设置广播的内容   
                    intent.setAction("lovefang.stadyService");// 设置广播的Action   
                    sendBroadcast(intent);   
                }   
            };   
               
        }   

   (2 )处理广播消息

    package lovefang.stadyService;   
    /***/   
        import android.content.BroadcastReceiver;   
        import android.content.Context;   
        import android.content.Intent;   
        import android.util.Log;   
    /**这是一个接收广播的类*/   
        public class UseBroadcastReceiver extends BroadcastReceiver{   
            public void onReceive(Context context, Intent intent){   
                Log.v("UseBroadcastReceiver", "I get a message");   
            }   
        }   

5.Notification通知 

这个称之为通知,显示在手机的通知栏,用户可以清除,可以点击

实现的代码如下:

package lovefang.stadyService;   
   
    import android.content.Intent;   
    import android.os.Bundle;   
    import android.app.Activity;   
    import android.app.Notification;   
    import android.app.NotificationManager;   
    import android.app.PendingIntent;   
    import android.net.Uri;   
    import android.media.RingtoneManager;   
    import android.widget.Button;   
    import android.view.View;   
   
/**使用notification*/   
    public class UseNotification extends Activity {   
            /**创建组件*/   
        private Button textButton;   
        private Button soundButton;// 声音通知   
        private Button vibrateButton;// 震动通知   
        private Button ledButton;// led通知   
        private Button offButton;// 关闭通知   
        NotificationManager notificationManager;   
            /**创建Activity*/   
        public void onCreate(Bundle savedInstanceState){   
            super.onCreate(savedInstanceState);   
            setContentView(R.layout.notification);   
            getComment();   
            registerComment();   
        }   
            /**获取对象*/   
        public void getComment(){   
                /**获取Notification对象*/   
            notificationManager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);   
            textButton = (Button)findViewById(R.id.notificationMessage);   
            soundButton =(Button)findViewById(R.id.notificationSound);   
            vibrateButton = (Button)findViewById(R.id.notificationVibrate);   
            ledButton = (Button)findViewById(R.id.notificationLED);   
            offButton = (Button)findViewById(R.id.offnotification);   
        }   
            /**注册对象*/   
        public void registerComment(){   
            textButton.setOnClickListener(notificationMessage);   
            soundButton.setOnClickListener(notificationSound);   
            vibrateButton.setOnClickListener(notificationVibrate);   
            ledButton.setOnClickListener(notificationLed);   
            offButton.setOnClickListener(notificationOff);   
        }   
        public Button.OnClickListener notificationMessage = new Button.OnClickListener(){   
            public void onClick(View view){   
                Notification notification = new Notification();// 创建Notification对象   
                notification.icon = R.drawable.icon;   
                notification.tickerText = "This is text notication";// 设置通知消息   
                    /**单击通知后的Intent,此例子单击后还是在当前页面*/   
                PendingIntent intent = PendingIntent   
                    .getActivity(UseNotification.this,   
                            0, new Intent(UseNotification.this,UseNotification.class)   
                            , 0);   
                    /**设置通知消息*/   
                notification.setLatestEventInfo(UseNotification.this   
                        ,"Notification","Content of Notification Demo",intent);   
                    /**执行通知*/   
                notificationManager.notify(0, notification);   
            }   
        };   
        public Button.OnClickListener notificationSound = new Button.OnClickListener(){   
            public void onClick(View view){   
                    /**创建通知对象*/   
                Notification notification = new Notification();   
                    /**获取系统当前声音*/   
                String ringName = RingtoneManager.getActualDefaultRingtoneUri(   
                        UseNotification.this, RingtoneManager.TYPE_RINGTONE)   
                        .toString();   
                    /**设置系统当前铃声为此通知的铃声*/   
                notification.sound = Uri.parse(ringName);   
                    /**执行通知*/   
                notificationManager.notify(0,notification);   
            }   
        };   
            /**震动通知*/   
        public Button.OnClickListener notificationVibrate = new Button.OnClickListener(){   
            public void onClick(View view){   
                Notification notification = new Notification();// 创建Notification对象   
                notification.vibrate = new long[] {0, 100, 200, 300};// 设置通知震动模式   
                notificationManager.notify(0,notification);// 执行通知   
            }   
        };   
            /**LED通知*/   
        public Button.OnClickListener notificationLed = new Button.OnClickListener(){   
            public void onClick(View view){   
                Notification notification = new Notification();// 创建Notification对象   
                notification.ledOnMS = 300;// 设置led开始闪光的时间   
                notification.ledOffMS = 1000;// 设置关闭时的闪光时间   
                notificationManager.notify(0,notification);// 执行通知   
            }   
        };   
            /**关闭通知*/   
        public Button.OnClickListener notificationOff = new Button.OnClickListener(){   
            public void onClick(View view){   
                notificationManager.cancel(0);// 关闭通知   
            }   
        };   
    } 

6.Alarm 闹钟服务

    package lovefang.stadyService;   
       
    import android.app.Activity;   
    import android.os.Bundle;   
    import android.widget.Button;   
    import android.view.View;   
    import android.app.AlarmManager;   
       
    import java.util.Calendar;   
       
    public class UseAlarmManager extends Activity {   
            /**创建参数*/   
        private Button startAlarm;   
        private Button shutdownAlarm;   
        private AlarmManager alarm;   
           
            /**创建Activity*/   
        public void onCreate(Bundle savedInstanceState){   
            super.onCreate(savedInstanceState);   
            setContentView(R.layout.usealarmmanager);   
            getWidget();   
        }   
        public void getWidget(){   
            startAlarm = (Button)findViewById(R.id.startAlarm);   
            shutdownAlarm = (Button)findViewById(R.id.shutDowntAlarm);   
            alarm = (AlarmManager)getSystemService(ALARM_SERVICE);// 获取AlarmManager   
        }   
        public void registerWidget(){   
            startAlarm.setOnClickListener(startAlarms);   
            shutdownAlarm.setOnClickListener(shutdownAlarms);   
        }   
            /**启动闹钟*/   
        public Button.OnClickListener startAlarms = new Button.OnClickListener(){   
            public void onClick(View view){   
                    // 设置10秒后出发闹钟   
                Calendar calendar = Calendar.getInstance();   
                calendar.setTimeInMillis(System.currentTimeMillis());// 设置calendar的时间   
                calendar.add(Calendar.SECOND, 10);   
                   
                alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), null);   
            }   
        };   
        public Button.OnClickListener shutdownAlarms = new Button.OnClickListener(){   
            public void onClick(View view){   
                alarm.cancel(null);   
            }   
        };   
    }   

接下来将为您介绍 获取手机的状态、Vibrator 震动功能等服务的具体内容:

7.获取手机的状态

这个功能实现的是获取用户手机的一些定义的信息

    package lovefang.stadyService;   
    /**引入包*/   
        import android.os.Bundle;   
        import android.app.Activity;   
        import android.app.Service;   
        import android.view.View;   
        import android.widget.Button;   
        import android.widget.TextView;   
        import android.content.ContentResolver;//This class provides applications access to the content model.   
        import android.telephony.TelephonyManager;   
        import android.util.Log;   
    /**获取手机的状态*/   
        public class UsePhoneState extends Activity{   
                /**创建参数*/   
            private ContentResolver cr;   
            private Button getStateButton;// 用来获取用户的手机状态   
                /**创建Activity*/   
            public void onCreate(Bundle savedInstanceState){   
                super.onCreate(savedInstanceState);   
                setContentView(R.layout.usephonestate);   
                   
                cr = getContentResolver();   
                Log.v("UsePhonestate","cr = getContentResolver()");   
                Log.v("UsePhonestate","setContentView");   
                getStateButton = (Button) findViewById(R.id.button_getphonestate);   
                Log.v("UsePhonestate","getStateButton");   
                getStateButton.setOnClickListener(getState);   
                Log.v("UsePhonestate","getStateButton.setOnClickListener");   
            }   
            private Button.OnClickListener getState = new Button.OnClickListener(){   
                public void onClick(View view){   
                        /**获得TelephonyManager对象*/   
                    TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Service.TELEPHONY_SERVICE);   
                        /**获取电信网络级别*/   
                    String teleCode = telephonyManager.getNetworkCountryIso();   
                        /**获取电信网络公司代码*/   
                    String teleComCode = telephonyManager.getNetworkOperator();   
                        /**获取电信网络公司名称*/   
                    String teleComName = telephonyManager.getNetworkOperatorName();   
                        /**获取行动通信类型*/   
                    int TypeCode = telephonyManager.getPhoneType();   
                       
                    String type = "";   
                       
                    switch(TypeCode){   
                        case TelephonyManager.PHONE_TYPE_NONE:   
                            type = "PHONE_TYPE_NONE";   
                            break;   
                        case TelephonyManager.PHONE_TYPE_GSM:   
                            type = "PHONE_TYPE_GSM";   
                            break;   
                        case TelephonyManager.PHONE_TYPE_CDMA:   
                            type = "PHONE_TYPE_CDMA";   
                            break;   
                    }   
                        /**获取网络类型*/   
                    int netTypeCode = telephonyManager.getNetworkType();   
                    String netType = "NETWORK_TYPE_UNKNOW";   
                    switch(netTypeCode){   
                        case TelephonyManager.NETWORK_TYPE_1xRTT:   
                            netType = "NETWORK_TYPE_1xRTT";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_CDMA:   
                            netType = "NETWORK_TYPE_CDMA";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_EDGE:   
                            netType = "NETWORK_TYPE_EDGE";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_EVDO_0:   
                            netType = "NETWORK_TYPE_EVDO_0";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_EVDO_A:   
                            netType = "NETWORK_TYPE_EVDO_A";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_GPRS:   
                            netType = "NETWORK_TYPE_GPRS";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_HSDPA:   
                            netType = "NETWORK_TYPE_HSDPA";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_HSPA:   
                            netType = "NETWORK_TYPE_HSPA";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_HSUPA:   
                            netType = "NETWORK_TYPE_HSUPA";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_IDEN:   
                            netType = "NETWORK_TYPE_IDEN";   
                            break;   
                        case TelephonyManager.NETWORK_TYPE_UMTS:   
                            netType = "NETWORK_TYPE_UMTS";   
                            break;   
                        default:   
                            break;   
                    }   
                       
                        /**获取漫游状态*/   
                    boolean roamStatusCode = telephonyManager.isNetworkRoaming();   
                    String roamStatus = "NOT ROAMINF";   
                    if(roamStatusCode){   
                        roamStatus = "ROAMING";   
                    }   
                       
                        /**获取手机唯一标识*/   
                    String imei = telephonyManager.getDeviceId();   
                        /**获取手机IMEI SV*/   
                    String imeiSV = telephonyManager.getDeviceSoftwareVersion();   
                        /**获取手机IMSI*/   
                    String imsi = telephonyManager.getSubscriberId();   
                       
                        /**蓝牙服务*/   
                    String statusCode = android.provider.Settings.System.getString(cr,   
                            android.provider.Settings.System.BLUETOOTH_ON);   
                    String bulettothStatus = "";   
                    if(statusCode.equals("1")){   
                        bulettothStatus = "ENABLE";   
                    }else{   
                        bulettothStatus = "DISABLE";   
                    }   
                       
                        /**飞行模式是否打开*/   
                    statusCode = android.provider.Settings.System.getString(cr,   
                            android.provider.Settings.System.AIRPLANE_MODE_ON);   
                       
                    String AirplaneStatus = "";   
                    if(statusCode.equals("1")){   
                        AirplaneStatus = "ENABLE";   
                    }else{   
                        AirplaneStatus = "DISABLE";   
                    }   
                       
                        /**数据漫游模式是否打开*/   
                    statusCode = android.provider.Settings.System.getString(cr,   
                            android.provider.Settings.System.DATA_ROAMING);   
                    String dataRoamStatus = "";   
                    if(statusCode.equals("1")){   
                        dataRoamStatus = "ENABLE";   
                    }else{   
                        dataRoamStatus = "DISABLE";   
                    }   
                    TextView txt = (TextView) findViewById(R.id.text_showphonestate);   
                    StringBuilder sb = new StringBuilder();   
                    sb.append("teleCode: "+teleCode+"\n");   
                    sb.append("teleComCode: "+teleComCode+"\n");   
                    sb.append("teleComName: "+teleComName+"\n");   
                    sb.append("type: "+type+"\n");   
                    sb.append("netType: "+netType+"\n");   
                    sb.append("roamStatus: "+roamStatus+"\n");   
                    sb.append("imei: "+imei+"\n");   
                    sb.append("imeiSV: "+imeiSV+"\n");   
                    sb.append("imsi: "+imsi+"\n");   
                    sb.append("bulettothStatus: "+bulettothStatus+"\n");   
                    sb.append("AirplaneStatus: "+AirplaneStatus+"\n");   
                    sb.append("dataRoamStatus: "+dataRoamStatus+"\n");   
                       
                    txt.setText(sb.toString());   
                }   
            };   
        }   

8.Vibrator 震动功能

实现对手机震动的管理

    package lovefang.stadyService;   
    /***/   
        import android.os.Bundle;   
        import android.os.Vibrator;   
        import android.app.Activity;   
        import android.view.View;   
        import android.content.Context;   
        import android.widget.Button;   
    /**如何实现手机的震动提示Vibrator*/   
        public class UseVibrator extends Activity{   
                /***/   
            private Button vibrator_1_Button;   
            private Button vibrator_2_Button;   
            private Button vibrator_3_Button;   
            private Vibrator vibrator;   
                /***/   
            public void onCreate(Bundle savedInstanceState){   
                super.onCreate(savedInstanceState);   
                setContentView(R.layout.use_vibrator);   
                vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);   
                getWidget();   
                registerWidget();   
            }   
               
            public void getWidget(){   
                vibrator_1_Button = (Button) findViewById(R.id.button_vibrator_1);   
                vibrator_2_Button = (Button) findViewById(R.id.button_vibrator_2);   
                vibrator_3_Button = (Button) findViewById(R.id.button_vibrator_3);   
            }   
               
            public void registerWidget(){   
                vibrator_1_Button.setOnClickListener(vibrator_1);   
                vibrator_2_Button.setOnClickListener(vibrator_2);   
                vibrator_3_Button.setOnClickListener(vibrator_3);   
            }   
                /**震动一次*/   
            public Button.OnClickListener vibrator_1 = new Button.OnClickListener(){   
                public void onClick(View view){   
                        /**long参数数组里大参数的含义*/   
                        /**第一个参数表示等待100毫秒后开始震动*/   
                        /**第二个参数表示震动100毫秒后停止震动*/   
                    vibrator.vibrate(new long[]{100,100}, 0);   
                }   
            };   
                /**震动两次*/   
            public Button.OnClickListener vibrator_2 = new Button.OnClickListener(){   
                public void onClick(View view){   
                    vibrator.vibrate(new long[]{1000,3000,1000,3000}, 0);   
                }   
            };   
                /**震动三次*/   
            public Button.OnClickListener vibrator_3 = new Button.OnClickListener(){   
                public void onClick(View view){   
                    vibrator.vibrate(new long[]{1000,1000,1000,2000,1000,300}, 0);   
                }   
            };   
        }  

下面给出源代码的下载地址(注:第三方网站下载资源需注册):

http://download.csdn.net/detail/dlutbrucezhang/5061544

希望通过这篇一个Demo学完Android中所有的服务对对广大读者有所帮助。









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
简明、完整、全面的安卓开发demo集合,包含如下示例 1、LinearLayout Button、RadioGroup、 CheckBox 2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock and Chronometer 时钟和数字日期 10、AutoCompleteTextView 根据输入自动补充可能的全部 11、Spinner View 选择框(弹出框形式选择) 12、DatePicker TimePicker View 日期时间选择器 13、ProgressBar View 普通进度条、显示在标题栏上的进度条 14、RatingBar View 评级 15、 SeekBar 拖动条,音量调节效果 16、ScrollView 、HorizontalScrollView 垂直和水平滚动条 17、ScrollView 、HorizontalScrollView 垂直和水平滚动条 18、ExpandableListView 分组可展开收缩的ListView 19、Notification 状态栏通知 20、GridView、ImageSwitcher 21、SmsManager 消息管理器,发短信(这里是模拟器只能给其它模拟器发短信) 22、Intent Action、Category属性 测试 23、系统 Action、Category属性 24、ClipDrawable 徐徐展开的风景 25、AnimationDrawable 会动的图片 26、Menu、SubMenu、ContextMenu xml配置menu 27、Attribute 自定义view的duration属性 控制图片的透明度 28、Bitmap、BitmapFactory 图形与图像处理 29、Canvas 绘制自定义图形 30、Canvas 采用双缓存实现画图板 31、SharedPreference 简单的key-value数据存取 32、SQLiteDatabase 安卓客户端的嵌入式数据库 33、GestureDetector + ViewFlipper实现翻页效果 34、GestureLiberay 自定义手势 35、GestureLiberay 通过自定义的手势实现用户操作 36、TextToSpeech 语音朗读 37、ContentProvider、ContentResolver 应用之间共享数据 38、 Service 相当于没有界面的activity 39、Activity与Service运行通信 40、Service 相当于没有界面的activity 41、AIDL Service android的跨进程调用 客户端,服务端见AidlService 42、BroadcastReceiver 接收广播消息 43、非UI线程不能操作UI线程的View测试 44、ImageSwitcher animation gesture实现可以滑动的跑马灯 45、下载状态栏显示下载进度 46、Gallery3d效果 47、ListView 上拉加载更多效果 48、异步加载图片的二级缓存技术 49、QQ的好友列表展示效果 50、Fragment + ViewPager实现tab滑动切换 51、能够显示在桌面前面的的歌词效果 52、activity切换特效

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值