1、首先先用usb線連接android手機(jī),然后輸入指令:adbtcpip,端口號默認(rèn)為5555。
站在用戶的角度思考問題,與客戶深入溝通,找到尖草坪網(wǎng)站設(shè)計(jì)與尖草坪網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋尖草坪地區(qū)。
2、設(shè)置端口號后,然后查看設(shè)置中手機(jī)的ip地址。
3、通過adb連接ip地址adbconnectip地址。
4、打開androidstudio,可以看到手機(jī)已經(jīng)連接上了。
用戶手機(jī)當(dāng)前網(wǎng)絡(luò)可用:WIFI、2G/3G網(wǎng)絡(luò),用戶打開與不打開網(wǎng)絡(luò),和是否可以用是兩碼事??梢允褂弥傅氖牵河脩舸蜷_網(wǎng)絡(luò)了并且可以連上互聯(lián)網(wǎng)進(jìn)行上網(wǎng)。
檢測當(dāng)前網(wǎng)絡(luò)是否可用,代碼如下:
/**
* 檢測當(dāng)?shù)木W(wǎng)絡(luò)(WLAN、3G/2G)狀態(tài)
* @param context Context
* @return true 表示網(wǎng)絡(luò)可用
*/
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null info.isConnected())
{
// 當(dāng)前網(wǎng)絡(luò)是連接的
if (info.getState() == NetworkInfo.State.CONNECTED)
{
// 當(dāng)前所連接的網(wǎng)絡(luò)可用
return true;
}
}
}
return false;
}
/**
* 檢測當(dāng)?shù)木W(wǎng)絡(luò)(WLAN、3G/2G)狀態(tài)
* @param context Context
* @return true 表示網(wǎng)絡(luò)可用
*/
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null info.isConnected())
{
// 當(dāng)前網(wǎng)絡(luò)是連接的
if (info.getState() == NetworkInfo.State.CONNECTED)
{
// 當(dāng)前所連接的網(wǎng)絡(luò)可用
return true;
}
}
}
return false;
}
在AndroidManifest.xml文件添加的權(quán)限:
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/
uses-permission android:name="android.permission.INTERNET"/
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/
uses-permission android:name="android.permission.INTERNET"/
獲取android系統(tǒng)的連接服務(wù)可判斷網(wǎng)絡(luò)連接狀態(tài),代碼如下
public class NetUtils{
public static boolean isNetworkConnected(Context context){
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] infos = cm.getAllNetworkInfo();
for(NetworkInfo info:infos){
if(info.isAvailable()info.isConnected()){
return true;
}
}
return false;
}
}
NetworkInfo的isAvailable()和isConnected()有以下5種狀態(tài):
在WLAN設(shè)置界面
1,顯示連接已保存,但標(biāo)題欄沒有,即沒有實(shí)質(zhì)連接上:isConnected()==false,isAvailable()=true
2,顯示連接已保存,標(biāo)題欄也有已連接上的圖標(biāo):isConnected()==true,isAvailable()=true
3,選擇不保存后:isConnected()==false,isAvailable()=true
4,選擇連接,在正在獲取IP地址時:isConnected()==false,isAvailable()=false
5,連接上后:isConnected()==true,isAvailable()=true
實(shí)現(xiàn)步驟:
下面解決辦法來自于android學(xué)習(xí)手冊,android學(xué)習(xí)手冊包含9個章節(jié),108個例子,源碼文檔隨便看,例子都是可交互,可運(yùn)行,源碼采用android studio目錄結(jié)構(gòu),高亮顯示代碼,文檔都采用文檔結(jié)構(gòu)圖顯示,可以快速定位。360手機(jī)助手中下載。排到第三個。
1、獲取ConnectivityManager對象
Context context = activity.getApplicationContext();
// 獲取手機(jī)所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
2、獲取NetworkInfo對象
// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
3、判斷當(dāng)前網(wǎng)絡(luò)狀態(tài)是否為連接狀態(tài)
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
4、在AndroidManifest.xml中添加訪問當(dāng)前網(wǎng)絡(luò)狀態(tài)權(quán)限
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/uses-permission
代碼如下:
public class ClassTestDemoActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (isNetworkAvailable(ClassTestDemoActivity.this))
{
Toast.makeText(getApplicationContext(), "當(dāng)前有可用網(wǎng)絡(luò)!", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "當(dāng)前沒有可用網(wǎng)絡(luò)!", Toast.LENGTH_LONG).show();
}
}
/**
* 檢查當(dāng)前網(wǎng)絡(luò)是否可用
*
* @param context
* @return
*/
public boolean isNetworkAvailable(Activity activity)
{
Context context = activity.getApplicationContext();
// 獲取手機(jī)所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null)
{
return false;
}
else
{
// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
if (networkInfo != null networkInfo.length 0)
{
for (int i = 0; i networkInfo.length; i++)
{
System.out.println(i + "===狀態(tài)===" + networkInfo[i].getState());
System.out.println(i + "===類型===" + networkInfo[i].getTypeName());
// 判斷當(dāng)前網(wǎng)絡(luò)狀態(tài)是否為連接狀態(tài)
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
}
}
return false;
}
}
Scoket?判定是否連接網(wǎng)絡(luò)不僅需要使用isClose方法進(jìn)行判定,同時需要使用isConnected方法來判斷Socket對象 是否連接成功。
1) isConnected方法所判斷的并不是Socket對象的當(dāng)前連接狀態(tài),?而是Socket對象是否曾經(jīng)連接成功過,如果成功連接過,即使現(xiàn)在isClose返回true,?isConnected仍然返回true。因此,要判斷當(dāng)前的Socket對象是否處于連接狀態(tài),?必須同時使用isClose和isConnected方法,?即只有當(dāng)isClose返回false,isConnected返回true的時候Socket對象才處于連接狀態(tài)。
1) 在大多數(shù)的時候可以直接使用Socket類或輸入輸出流的close方法關(guān)閉網(wǎng)絡(luò)連接,但有時我們只希望關(guān)閉OutputStream或InputStream,而在關(guān)閉輸入輸出流的同時,并不關(guān)閉網(wǎng)絡(luò)連接。這就需要用到Socket類的另外兩個方法:shutdownInput和shutdownOutput,這兩個方法只關(guān)閉相應(yīng)的輸入、輸出流,而它們并沒有同時關(guān)閉網(wǎng)絡(luò)連接的功能。和isClosed、isConnected方法一樣,Socket類也提供了兩個方法來判斷Socket對象的輸入、輸出流是否被關(guān)閉,這兩個方法是isInputShutdown()和isOutputShutdown()。?shutdownInput和shutdownOutput并不影響Socket對象的狀態(tài)。