上代码:

MainActivity.java

[java] view plain copy
  1. packagecom.widget.hotspot;
  2. importandroid.os.Bundle;
  3. importandroid.app.Activity;
  4. importandroid.content.BroadcastReceiver;
  5. importandroid.content.Context;
  6. importandroid.content.Intent;
  7. importandroid.content.IntentFilter;
  8. importandroid.util.Log;
  9. importandroid.view.Menu;
  10. importandroid.view.View;
  11. importandroid.widget.Button;
  12. publicclassMainActivityextendsActivity{
  13. publicstaticfinalStringTAG="MainActivity";
  14. privateButtonmBtn1,mBtn2;
  15. privateWifiAdminmWifiAdmin;
  16. privateContextmContext=null;
  17. @Override
  18. protectedvoidonCreate(BundlesavedInstanceState){
  19. super.onCreate(savedInstanceState);
  20. mContext=this;
  21. setContentView(R.layout.activity_main);
  22. mBtn1=(Button)findViewById(R.id.button1);
  23. mBtn2=(Button)findViewById(R.id.button2);
  24. mBtn1.setText("点击连接Wifi");
  25. mBtn2.setText("点击创建Wifi热点");
  26. mBtn1.setOnClickListener(newButton.OnClickListener(){
  27. @Override
  28. publicvoidonClick(Viewv){
  29. //TODOAuto-generatedmethodstub
  30. mWifiAdmin=newWifiAdmin(mContext){
  31. @Override
  32. publicvoidmyUnregisterReceiver(BroadcastReceiverreceiver){
  33. //TODOAuto-generatedmethodstub
  34. MainActivity.this.unregisterReceiver(receiver);
  35. }
  36. @Override
  37. publicIntentmyRegisterReceiver(BroadcastReceiverreceiver,
  38. IntentFilterfilter){
  39. //TODOAuto-generatedmethodstub
  40. MainActivity.this.registerReceiver(receiver,filter);
  41. returnnull;
  42. }
  43. @Override
  44. publicvoidonNotifyWifiConnected(){
  45. //TODOAuto-generatedmethodstub
  46. Log.v(TAG,"haveconnectedsuccess!");
  47. Log.v(TAG,"###############################");
  48. }
  49. @Override
  50. publicvoidonNotifyWifiConnectFailed(){
  51. //TODOAuto-generatedmethodstub
  52. Log.v(TAG,"haveconnectedfailed!");
  53. Log.v(TAG,"###############################");
  54. }
  55. };
  56. mWifiAdmin.openWifi();
  57. mWifiAdmin.addNetwork(mWifiAdmin.createWifiInfo("YOU_WIFI","MM123456",WifiAdmin.TYPE_WPA));
  58. }
  59. });
  60. mBtn2.setOnClickListener(newButton.OnClickListener(){
  61. @Override
  62. publicvoidonClick(Viewv){
  63. //TODOAuto-generatedmethodstub
  64. WifiApAdminwifiAp=newWifiApAdmin(mContext);
  65. wifiAp.startWifiAp("\"HotSpot\"","hhhhhh123");
  66. }
  67. });
  68. }
  69. @Override
  70. publicbooleanonCreateOptionsMenu(Menumenu){
  71. //Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
  72. getMenuInflater().inflate(R.menu.activity_main,menu);
  73. returntrue;
  74. }
  75. @Override
  76. publicvoidonResume(){
  77. super.onResume();
  78. Log.d("Rssi","Registered");
  79. }
  80. @Override
  81. publicvoidonPause(){
  82. super.onPause();
  83. Log.d("Rssi","Unregistered");
  84. }
  85. }

WifiAdmin.java

参考了://http://blog.csdn.net/yuanbohx/article/details/8109042

[java] view plain copy
  1. packagecom.widget.hotspot;
  2. importjava.util.List;
  3. importjava.util.Timer;
  4. importjava.util.TimerTask;
  5. importandroid.content.BroadcastReceiver;
  6. importandroid.content.Context;
  7. importandroid.content.Intent;
  8. importandroid.content.IntentFilter;
  9. importandroid.net.ConnectivityManager;
  10. importandroid.net.NetworkInfo;
  11. importandroid.net.NetworkInfo.DetailedState;
  12. importandroid.net.wifi.ScanResult;
  13. importandroid.net.wifi.WifiConfiguration;
  14. importandroid.net.wifi.WifiInfo;
  15. importandroid.net.wifi.WifiManager;
  16. importandroid.net.wifi.WifiManager.WifiLock;
  17. importandroid.util.Log;
  18. publicabstractclassWifiAdmin{
  19. privatestaticfinalStringTAG="WifiAdmin";
  20. privateWifiManagermWifiManager;
  21. privateWifiInfomWifiInfo;
  22. //扫描出的网络连接列表
  23. privateList<ScanResult>mWifiList;
  24. privateList<WifiConfiguration>mWifiConfiguration;
  25. privateWifiLockmWifiLock;
  26. privateStringmPasswd="";
  27. privateStringmSSID="";
  28. privateContextmContext=null;
  29. publicWifiAdmin(Contextcontext){
  30. mContext=context;
  31. //取得WifiManager对象
  32. mWifiManager=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);
  33. //取得WifiInfo对象
  34. mWifiInfo=mWifiManager.getConnectionInfo();
  35. Log.v(TAG,"getIpAddress="+mWifiInfo.getIpAddress());
  36. }
  37. //打开WIFI
  38. publicvoidopenWifi(){
  39. if(!mWifiManager.isWifiEnabled()){
  40. mWifiManager.setWifiEnabled(true);
  41. }
  42. }
  43. //关闭WIFI
  44. publicvoidcloseWifi(){
  45. if(mWifiManager.isWifiEnabled()){
  46. mWifiManager.setWifiEnabled(false);
  47. }
  48. }
  49. publicabstractIntentmyRegisterReceiver(BroadcastReceiverreceiver,IntentFilterfilter);
  50. publicabstractvoidmyUnregisterReceiver(BroadcastReceiverreceiver);
  51. publicabstractvoidonNotifyWifiConnected();
  52. publicabstractvoidonNotifyWifiConnectFailed();
  53. //添加一个网络并连接
  54. publicvoidaddNetwork(WifiConfigurationwcg){
  55. register();
  56. WifiApAdmin.closeWifiAp(mContext);
  57. intwcgID=mWifiManager.addNetwork(wcg);
  58. booleanb=mWifiManager.enableNetwork(wcgID,true);
  59. }
  60. publicstaticfinalintTYPE_NO_PASSWD=0x11;
  61. publicstaticfinalintTYPE_WEP=0x12;
  62. publicstaticfinalintTYPE_WPA=0x13;
  63. publicvoidaddNetwork(Stringssid,Stringpasswd,inttype){
  64. if(ssid==null||passwd==null||ssid.equals("")){
  65. Log.e(TAG,"addNetwork()##nullpointererror!");
  66. return;
  67. }
  68. if(type!=TYPE_NO_PASSWD&&type!=TYPE_WEP&&type!=TYPE_WPA){
  69. Log.e(TAG,"addNetwork()##unknowntype="+type);
  70. }
  71. stopTimer();
  72. unRegister();
  73. addNetwork(createWifiInfo(ssid,passwd,type));
  74. }
  75. privateBroadcastReceivermBroadcastReceiver=newBroadcastReceiver(){
  76. @Override
  77. publicvoidonReceive(Contextcontext,Intentintent){
  78. //TODOAuto-generatedmethodstub
  79. if(intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)){
  80. Log.d(TAG,"RSSIchanged");
  81. //有可能是正在获取,或者已经获取了
  82. Log.d(TAG,"intentis"+WifiManager.RSSI_CHANGED_ACTION);
  83. if(isWifiContected(mContext)==WIFI_CONNECTED){
  84. stopTimer();
  85. onNotifyWifiConnected();
  86. unRegister();
  87. }elseif(isWifiContected(mContext)==WIFI_CONNECT_FAILED){
  88. stopTimer();
  89. closeWifi();
  90. onNotifyWifiConnectFailed();
  91. unRegister();
  92. }elseif(isWifiContected(mContext)==WIFI_CONNECTING){
  93. }
  94. }
  95. }
  96. };
  97. privatefinalintSTATE_REGISTRING=0x01;
  98. privatefinalintSTATE_REGISTERED=0x02;
  99. privatefinalintSTATE_UNREGISTERING=0x03;
  100. privatefinalintSTATE_UNREGISTERED=0x04;
  101. privateintmHaveRegister=STATE_UNREGISTERED;
  102. privatesynchronizedvoidregister(){
  103. Log.v(TAG,"register()##mHaveRegister="+mHaveRegister);
  104. if(mHaveRegister==STATE_REGISTRING
  105. ||mHaveRegister==STATE_REGISTERED){
  106. return;
  107. }
  108. mHaveRegister=STATE_REGISTRING;
  109. myRegisterReceiver(mBroadcastReceiver,newIntentFilter(WifiManager.RSSI_CHANGED_ACTION));
  110. mHaveRegister=STATE_REGISTERED;
  111. startTimer();
  112. }
  113. privatesynchronizedvoidunRegister(){
  114. Log.v(TAG,"unRegister()##mHaveRegister="+mHaveRegister);
  115. if(mHaveRegister==STATE_UNREGISTERED
  116. ||mHaveRegister==STATE_UNREGISTERING){
  117. return;
  118. }
  119. mHaveRegister=STATE_UNREGISTERING;
  120. myUnregisterReceiver(mBroadcastReceiver);
  121. mHaveRegister=STATE_UNREGISTERED;
  122. }
  123. privateTimermTimer=null;
  124. privatevoidstartTimer(){
  125. if(mTimer!=null){
  126. stopTimer();
  127. }
  128. mTimer=newTimer(true);
  129. //mTimer.schedule(mTimerTask,0,20*1000);//20s
  130. mTimer.schedule(mTimerTask,30*1000);
  131. }
  132. privateTimerTaskmTimerTask=newTimerTask(){
  133. @Override
  134. publicvoidrun(){
  135. //TODOAuto-generatedmethodstub
  136. Log.e(TAG,"timerout!");
  137. onNotifyWifiConnectFailed();
  138. unRegister();
  139. }
  140. };
  141. privatevoidstopTimer(){
  142. if(mTimer!=null){
  143. mTimer.cancel();
  144. mTimer=null;
  145. }
  146. }
  147. @Override
  148. protectedvoidfinalize(){
  149. try{
  150. super.finalize();
  151. unRegister();
  152. }catch(Throwablee){
  153. //TODOAuto-generatedcatchblock
  154. e.printStackTrace();
  155. }
  156. }
  157. publicWifiConfigurationcreateWifiInfo(StringSSID,Stringpassword,inttype){
  158. Log.v(TAG,"SSID="+SSID+"##Password="+password+"##Type="+type);
  159. WifiConfigurationconfig=newWifiConfiguration();
  160. config.allowedAuthAlgorithms.clear();
  161. config.allowedGroupCiphers.clear();
  162. config.allowedKeyManagement.clear();
  163. config.allowedPairwiseCiphers.clear();
  164. config.allowedProtocols.clear();
  165. config.SSID="\""+SSID+"\"";
  166. WifiConfigurationtempConfig=this.IsExsits(SSID);
  167. if(tempConfig!=null){
  168. mWifiManager.removeNetwork(tempConfig.networkId);
  169. }
  170. //分为三种情况:1没有密码2用wep加密3用wpa加密
  171. if(type==TYPE_NO_PASSWD){//WIFICIPHER_NOPASS
  172. config.wepKeys[0]="";
  173. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  174. config.wepTxKeyIndex=0;
  175. }elseif(type==TYPE_WEP){//WIFICIPHER_WEP
  176. config.hiddenSSID=true;
  177. config.wepKeys[0]="\""+password+"\"";
  178. config.allowedAuthAlgorithms
  179. .set(WifiConfiguration.AuthAlgorithm.SHARED);
  180. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  181. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  182. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
  183. config.allowedGroupCiphers
  184. .set(WifiConfiguration.GroupCipher.WEP104);
  185. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  186. config.wepTxKeyIndex=0;
  187. }elseif(type==TYPE_WPA){//WIFICIPHER_WPA
  188. config.preSharedKey="\""+password+"\"";
  189. config.hiddenSSID=true;
  190. config.allowedAuthAlgorithms
  191. .set(WifiConfiguration.AuthAlgorithm.OPEN);
  192. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  193. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
  194. config.allowedPairwiseCiphers
  195. .set(WifiConfiguration.PairwiseCipher.TKIP);
  196. //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
  197. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  198. config.allowedPairwiseCiphers
  199. .set(WifiConfiguration.PairwiseCipher.CCMP);
  200. config.status=WifiConfiguration.Status.ENABLED;
  201. }
  202. returnconfig;
  203. }
  204. publicstaticfinalintWIFI_CONNECTED=0x01;
  205. publicstaticfinalintWIFI_CONNECT_FAILED=0x02;
  206. publicstaticfinalintWIFI_CONNECTING=0x03;
  207. /**
  208. *判断wifi是否连接成功,不是network
  209. *
  210. *@paramcontext
  211. *@return
  212. */
  213. publicintisWifiContected(Contextcontext){
  214. ConnectivityManagerconnectivityManager=(ConnectivityManager)context
  215. .getSystemService(Context.CONNECTIVITY_SERVICE);
  216. NetworkInfowifiNetworkInfo=connectivityManager
  217. .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  218. Log.v(TAG,"isConnectedOrConnecting="+wifiNetworkInfo.isConnectedOrConnecting());
  219. Log.d(TAG,"wifiNetworkInfo.getDetailedState()="+wifiNetworkInfo.getDetailedState());
  220. if(wifiNetworkInfo.getDetailedState()==DetailedState.OBTAINING_IPADDR
  221. ||wifiNetworkInfo.getDetailedState()==DetailedState.CONNECTING){
  222. returnWIFI_CONNECTING;
  223. }elseif(wifiNetworkInfo.getDetailedState()==DetailedState.CONNECTED){
  224. returnWIFI_CONNECTED;
  225. }else{
  226. Log.d(TAG,"getDetailedState()=="+wifiNetworkInfo.getDetailedState());
  227. returnWIFI_CONNECT_FAILED;
  228. }
  229. }
  230. privateWifiConfigurationIsExsits(StringSSID){
  231. List<WifiConfiguration>existingConfigs=mWifiManager.getConfiguredNetworks();
  232. for(WifiConfigurationexistingConfig:existingConfigs){
  233. if(existingConfig.SSID.equals("\""+SSID+"\"")/*&&existingConfig.preSharedKey.equals("\""+password+"\"")*/){
  234. returnexistingConfig;
  235. }
  236. }
  237. returnnull;
  238. }
  239. //断开指定ID的网络
  240. publicvoiddisconnectWifi(intnetId){
  241. mWifiManager.disableNetwork(netId);
  242. mWifiManager.disconnect();
  243. }
  244. //检查当前WIFI状态
  245. publicintcheckState(){
  246. returnmWifiManager.getWifiState();
  247. }
  248. //锁定WifiLock
  249. publicvoidacquireWifiLock(){
  250. mWifiLock.acquire();
  251. }
  252. //解锁WifiLock
  253. publicvoidreleaseWifiLock(){
  254. //判断时候锁定
  255. if(mWifiLock.isHeld()){
  256. mWifiLock.acquire();
  257. }
  258. }
  259. //创建一个WifiLock
  260. publicvoidcreatWifiLock(){
  261. mWifiLock=mWifiManager.createWifiLock("Test");
  262. }
  263. //得到配置好的网络
  264. publicList<WifiConfiguration>getConfiguration(){
  265. returnmWifiConfiguration;
  266. }
  267. //指定配置好的网络进行连接
  268. publicvoidconnectConfiguration(intindex){
  269. //索引大于配置好的网络索引返回
  270. if(index>mWifiConfiguration.size()){
  271. return;
  272. }
  273. //连接配置好的指定ID的网络
  274. mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
  275. true);
  276. }
  277. publicvoidstartScan(){
  278. mWifiManager.startScan();
  279. mWifiList=mWifiManager.getScanResults();
  280. mWifiConfiguration=mWifiManager.getConfiguredNetworks();
  281. }
  282. //得到网络列表
  283. publicList<ScanResult>getWifiList(){
  284. returnmWifiList;
  285. }
  286. //查看扫描结果
  287. publicStringBuilderlookUpScan(){
  288. StringBuilderstringBuilder=newStringBuilder();
  289. for(inti=0;i<mWifiList.size();i++){
  290. stringBuilder
  291. .append("Index_"+newInteger(i+1).toString()+":");
  292. //将ScanResult信息转换成一个字符串包
  293. //其中把包括:BSSID、SSID、capabilities、frequency、level
  294. stringBuilder.append((mWifiList.get(i)).toString());
  295. stringBuilder.append("/n");
  296. }
  297. returnstringBuilder;
  298. }
  299. //得到MAC地址
  300. publicStringgetMacAddress(){
  301. return(mWifiInfo==null)?"NULL":mWifiInfo.getMacAddress();
  302. }
  303. //得到接入点的BSSID
  304. publicStringgetBSSID(){
  305. return(mWifiInfo==null)?"NULL":mWifiInfo.getBSSID();
  306. }
  307. //得到IP地址
  308. publicintgetIPAddress(){
  309. return(mWifiInfo==null)?0:mWifiInfo.getIpAddress();
  310. }
  311. //得到连接的ID
  312. publicintgetNetworkId(){
  313. return(mWifiInfo==null)?0:mWifiInfo.getNetworkId();
  314. }
  315. //得到WifiInfo的所有信息包
  316. publicStringgetWifiInfo(){
  317. return(mWifiInfo==null)?"NULL":mWifiInfo.toString();
  318. }
  319. }



WifiApAdmin.java

参考了 http://blog.csdn.net/cxlmax/article/details/7827102

[java] view plain copy
  1. packagecom.widget.hotspot;
  2. importjava.lang.reflect.InvocationTargetException;
  3. importjava.lang.reflect.Method;
  4. importjava.util.Timer;
  5. importjava.util.TimerTask;
  6. importandroid.content.Context;
  7. importandroid.net.wifi.WifiConfiguration;
  8. importandroid.net.wifi.WifiManager;
  9. importandroid.util.Log;
  10. /**
  11. *创建热点
  12. *
  13. */
  14. publicclassWifiApAdmin{
  15. publicstaticfinalStringTAG="WifiApAdmin";
  16. publicstaticvoidcloseWifiAp(Contextcontext){
  17. WifiManagerwifiManager=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);
  18. closeWifiAp(wifiManager);
  19. }
  20. privateWifiManagermWifiManager=null;
  21. privateContextmContext=null;
  22. publicWifiApAdmin(Contextcontext){
  23. mContext=context;
  24. mWifiManager=(WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
  25. closeWifiAp(mWifiManager);
  26. }
  27. privateStringmSSID="";
  28. privateStringmPasswd="";
  29. publicvoidstartWifiAp(Stringssid,Stringpasswd){
  30. mSSID=ssid;
  31. mPasswd=passwd;
  32. if(mWifiManager.isWifiEnabled()){
  33. mWifiManager.setWifiEnabled(false);
  34. }
  35. stratWifiAp();
  36. MyTimerChecktimerCheck=newMyTimerCheck(){
  37. @Override
  38. publicvoiddoTimerCheckWork(){
  39. //TODOAuto-generatedmethodstub
  40. if(isWifiApEnabled(mWifiManager)){
  41. Log.v(TAG,"Wifienabledsuccess!");
  42. this.exit();
  43. }else{
  44. Log.v(TAG,"Wifienabledfailed!");
  45. }
  46. }
  47. @Override
  48. publicvoiddoTimeOutWork(){
  49. //TODOAuto-generatedmethodstub
  50. this.exit();
  51. }
  52. };
  53. timerCheck.start(15,1000);
  54. }
  55. publicvoidstratWifiAp(){
  56. Methodmethod1=null;
  57. try{
  58. method1=mWifiManager.getClass().getMethod("setWifiApEnabled",
  59. WifiConfiguration.class,boolean.class);
  60. WifiConfigurationnetConfig=newWifiConfiguration();
  61. netConfig.SSID=mSSID;
  62. netConfig.preSharedKey=mPasswd;
  63. netConfig.allowedAuthAlgorithms
  64. .set(WifiConfiguration.AuthAlgorithm.OPEN);
  65. netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
  66. netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
  67. netConfig.allowedKeyManagement
  68. .set(WifiConfiguration.KeyMgmt.WPA_PSK);
  69. netConfig.allowedPairwiseCiphers
  70. .set(WifiConfiguration.PairwiseCipher.CCMP);
  71. netConfig.allowedPairwiseCiphers
  72. .set(WifiConfiguration.PairwiseCipher.TKIP);
  73. netConfig.allowedGroupCiphers
  74. .set(WifiConfiguration.GroupCipher.CCMP);
  75. netConfig.allowedGroupCiphers
  76. .set(WifiConfiguration.GroupCipher.TKIP);
  77. method1.invoke(mWifiManager,netConfig,true);
  78. }catch(IllegalArgumentExceptione){
  79. //TODOAuto-generatedcatchblock
  80. e.printStackTrace();
  81. }catch(IllegalAccessExceptione){
  82. //TODOAuto-generatedcatchblock
  83. e.printStackTrace();
  84. }catch(InvocationTargetExceptione){
  85. //TODOAuto-generatedcatchblock
  86. e.printStackTrace();
  87. }catch(SecurityExceptione){
  88. //TODOAuto-generatedcatchblock
  89. e.printStackTrace();
  90. }catch(NoSuchMethodExceptione){
  91. //TODOAuto-generatedcatchblock
  92. e.printStackTrace();
  93. }
  94. }
  95. privatestaticvoidcloseWifiAp(WifiManagerwifiManager){
  96. if(isWifiApEnabled(wifiManager)){
  97. try{
  98. Methodmethod=wifiManager.getClass().getMethod("getWifiApConfiguration");
  99. method.setAccessible(true);
  100. WifiConfigurationconfig=(WifiConfiguration)method.invoke(wifiManager);
  101. Methodmethod2=wifiManager.getClass().getMethod("setWifiApEnabled",WifiConfiguration.class,boolean.class);
  102. method2.invoke(wifiManager,config,false);
  103. }catch(NoSuchMethodExceptione){
  104. //TODOAuto-generatedcatchblock
  105. e.printStackTrace();
  106. }catch(IllegalArgumentExceptione){
  107. //TODOAuto-generatedcatchblock
  108. e.printStackTrace();
  109. }catch(IllegalAccessExceptione){
  110. //TODOAuto-generatedcatchblock
  111. e.printStackTrace();
  112. }catch(InvocationTargetExceptione){
  113. //TODOAuto-generatedcatchblock
  114. e.printStackTrace();
  115. }
  116. }
  117. }
  118. privatestaticbooleanisWifiApEnabled(WifiManagerwifiManager){
  119. try{
  120. Methodmethod=wifiManager.getClass().getMethod("isWifiApEnabled");
  121. method.setAccessible(true);
  122. return(Boolean)method.invoke(wifiManager);
  123. }catch(NoSuchMethodExceptione){
  124. //TODOAuto-generatedcatchblock
  125. e.printStackTrace();
  126. }catch(Exceptione){
  127. e.printStackTrace();
  128. }
  129. returnfalse;
  130. }
  131. }



MyTimeCheck.java

[java] view plain copy
  1. packagecom.widget.hotspot;
  2. publicabstractclassMyTimerCheck{
  3. privateintmCount=0;
  4. privateintmTimeOutCount=1;
  5. privateintmSleepTime=1000;//1s
  6. privatebooleanmExitFlag=false;
  7. privateThreadmThread=null;
  8. /**
  9. *DonotprocessUIworkinthis.
  10. */
  11. publicabstractvoiddoTimerCheckWork();
  12. publicabstractvoiddoTimeOutWork();
  13. publicMyTimerCheck(){
  14. mThread=newThread(newRunnable(){
  15. @Override
  16. publicvoidrun(){
  17. //TODOAuto-generatedmethodstub
  18. while(!mExitFlag){
  19. mCount++;
  20. if(mCount<mTimeOutCount){
  21. doTimerCheckWork();
  22. try{
  23. mThread.sleep(mSleepTime);
  24. }catch(InterruptedExceptione){
  25. //TODOAuto-generatedcatchblock
  26. e.printStackTrace();
  27. exit();
  28. }
  29. }else{
  30. doTimeOutWork();
  31. }
  32. }
  33. }
  34. });
  35. }
  36. /**
  37. *start
  38. *@paramtimesHowmanytimeswillcheck?
  39. *@paramsleepTimems,Everychecksleeptime.
  40. */
  41. publicvoidstart(inttimeOutCount,intsleepTime){
  42. mTimeOutCount=timeOutCount;
  43. mSleepTime=sleepTime;
  44. mThread.start();
  45. }
  46. publicvoidexit(){
  47. mExitFlag=true;
  48. }
  49. }

更多相关文章

  1. Android 网络编程基础之简单聊天程序
  2. Android 9.0网络权限适配
  3. Android 判断网络

随机推荐

  1. 使用android源码编译并烧LG nexus4
  2. Android(安卓)Studio初体验
  3. android WallpaperPicker7.0源码分析
  4. 线程 同步 ConditionVariable
  5. Android(安卓)Theme.AppCompat.Light报错
  6. umeng android 统计类部署
  7. Android(安卓)AsyncLayoutInflater 源码
  8. Android自学之路,主界面的搭建Drawerlayou
  9. Android中关于sdcard的操作
  10. Android(安卓)SurfaceTexture解读