Activity 主界面服务

来源:互联网 发布:数据分享网站 编辑:程序博客网 时间:2024/05/29 06:53

这个类主要是实现用户所看到的这个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发送广播,并由相应的广播接收器接收并执行相应的动作

实现的代码如下:

4.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);            }        };            }
复制代码

 

4.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);        }    };}
复制代码


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);            }        };    }
复制代码
0 0
原创粉丝点击