android網路獲取數據
A. android怎麼使用api獲取數據
1、確保在清單文件中添加如下許可權:<!-- 使用網路功能所需許可權 --> <uses-permission android:name="android.permission.INTERNET" > </uses-permission>
2、如果已經添加了該許可權,並且編寫測試類能夠獲取,但在Android項目中運行時卻提示:
3、則可能是連接的模擬器或手機『網路沒有連接』……已經親驗。
B. android 手機怎麼連接電腦上的資料庫,直接獲取資料庫數據
資料庫很多,但是安卓直接支持的資料庫只有sqlite一種。如果要使用其它的非本地資料庫,你得建立連接,採用webservice或http協議中轉數據。
安卓訪問mysql里的數據得:
1)先建立網路,使用WIFI區域網
2)在PC建立數據訪問介面,編寫http協議應用(方法非常多。
asp、php、jsp都有訪問mysql的方法),還得關掉防火牆
3)編寫安卓手機客戶端連接設備的http
service
C. android怎樣獲取網路速度
Android應用里經常使用到網路速度的顯示,特別是文件下載和視頻緩沖的時候。用到的是TrafficStats類,就是每隔一段時間去讀取網速:
java">privatevoidshowNetSpeed(){
longnowTotalRxBytes=getTotalRxBytes();
longnowTimeStamp=System.currentTimeMillis();
longspeed=((nowTotalRxBytes-lastTotalRxBytes)*1000/(nowTimeStamp-lastTimeStamp));//毫秒轉換
lastTimeStamp=nowTimeStamp;
lastTotalRxBytes=nowTotalRxBytes;
Messagemsg=mHandler.obtainMessage();
msg.what=100;
msg.obj=String.valueOf(speed)+"kb/s";
mHandler.sendMessage(msg);//更新界面
}
D. Android7.0 WiFi開發獲取列表異常,為什麼獲取了同樣的數據
1、使用Android電源管理widget 從Android 2.1系統開始內置了一個非常強大的帶能源管理widget,通過這個widget你可以快速開啟或者關閉Wi-Fi,藍牙,GPS,同步這些手機耗電大戶,還可 以方便的設定手機屏幕亮度,長按手機屏幕,就可以在widgets目錄選擇啟用。 2、Android手機撥號屏幕 如果你對手機撥號屏幕功能性有特殊要求,Android絕對會滿足你,點擊聯系人列表裡任意一個用戶,按手機menu >選項,裡面有關於單個聯系人的詳細設置。 3、為每個聯系人定製鈴聲 可以為女朋友或者家人設置單 獨的鈴聲,這樣聽到鈴聲就知道誰來電話了。設置方法點擊聯系人列表裡任意一個用戶,然後就可以設置鈴聲。 4、不要把手機鬧鍾(alarm clock)加入進程查殺列表裡這是一個經典的錯誤,很多用戶都喜歡用進程管理程序自動殺掉一些程序以節省電量或者騰出手機內存,不過如果不小心alarm clock進程也殺掉了,後果就是第二天早晨10:30才醒過來驚慌失措的奔向公司。 5、用文件夾組織內容 雖然喬布斯花了很久才決定放開iOS用戶通過文件夾組織內容的許可權,事實上Android從面世開始就支持這個功能,Android文件夾不但支持放入程序圖標,還可以存放通訊錄,甚至升咐facebook聯系人等信息,長按手機屏幕就可以在桌面建立文件夾。 6、重命名文件夾 建立了文件夾後你可能需要修改它的名稱,只需要打開文件夾,長按頂部的名稱就可以調出重命名文件夾的窗口。 7、查看系統日期 Android新用戶可能覺得查看系統日期有點麻煩,其實只要按住屏幕頂部左上方的提醒欄,就會顯示今天的日期,趕快試試吧。 8、掛載你的SD卡 Android系統基於Linux內核,所以使用外部磁碟之前必須要mount掛載後才可以正常使用。使用USB線連接手機和電腦時,手機會提示掛載SD卡,必須點擊完成掛載後才可以在SD卡里拷貝或者刪除數據。 9、設置鍵盤快捷方式 很多用戶迷戀物理全鍵盤的另外一個重要原因就是Android支持大量的鍵盤快捷鍵,通過快捷鍵可以快速調用相關程序,可以在系統設置>應用程序>快速啟動里設置 10、下載更多Android動態壁紙Android 2.1開始系統支持的另外一個功能就是動態壁紙,雖然動態壁紙可能會讓你的手機耗電量增加,不過卻能讓你的手機看起來更酷,如果你喜歡耍酷,在Android Market搜索live wallpaper,會有很多動態壁紙等待你選擇。 11、快速切換主屏 Android系統一般提供5個主屏, 或許你覺得每次滑動手指切換太麻煩,可以按一下home鍵,然後就可以選擇進入特定的主屏,HTC Sense的手機還支持多點觸摸友游調出所有主屏幕供選擇。 12、添加一個快速導航鍵 Android 2.1系統支持用戶建立地圖導航的快捷方式,選擇任意一個導航線路都可以在桌面建立一個快捷菜單,可以在出行前設定好導航的線路,需要時點擊快捷菜單節省時間。 13、設吵告純置雙擊屏幕放大的級別 絕大多數不支持多點觸摸的Android手機,在使用瀏覽器瀏覽網頁時都可以通過雙擊屏幕放大網頁內容,而且你還可以在瀏覽器設置里「默認縮放」選項選擇三種放大級別,這樣每次使用雙擊放大時的效果都不同。 14、改變Android瀏覽器字體 Android手機終端千差萬別,不同屏幕和解析度的手機最佳的瀏覽字體都不同,只需要在瀏覽器設置里設置合適的字體大小,就可以提高閱讀效率。 15、搜索網頁特定內容 在瀏覽器設置>更多>查找 選項可以用來搜索網頁內容里的特定欄位,幫助你快速查找相關內容,這也是PC瀏覽器的標准功能之一。 16、語音輸入 Android 2.1系統開始支持語音輸入功能,雖然處理起來有些延時,如果你勤加練習還是可以做到基本正確輸入,這對練習英語口語的同學也是一條途徑。 17、Android字典造詞功能 在使用Android鍵盤輸入一個特定詞語時,你可以長按它然後選擇添加到建議詞語區域,這樣就可以把這個詞加入Android字典,下次輸入時只需打入前幾個字目就可以調出這個詞。 18、同步手機照片到Picasa相冊 雖然Google的Picasa網路相冊不 及Flickr受歡迎。不過Android 2.1的3D相冊開始支持自動同步手機照片到Picasa帳戶,不需要第三方軟體就可以設置同步給了很多用戶使用Picasa的理由,不過悲劇的是 Picasa在國內無法正常打開,原因大家都懂的。 19、下載網頁圖片瀏覽網頁時想保存圖片,只要長按圖片就可以單獨保存,保存的圖片可以在相冊程序中查看。 20、管理Android通話記錄 Android通話記錄非常方便,長按任意一條播出或者接入電話記錄就可以選擇刪除,非常easy。 安卓手機使用常見疑難問題: 1.安卓系統 如何找到安裝在內存卡及手機裡面的軟體 在手機菜單-設置-應用程序-管理應用程序-所有應用程序裡面就能看到 2.安卓系統 如何刪除手機及內存卡裡面的軟體 menu----設置------應用程序-----管理應用程序,找到不需要的軟體點擊----再點擊卸載。系統自帶的要刷許可權才能卸載 3.如何安裝並設置輸入法? 主界面=>菜單=>設置=>語音與鍵盤=>勾選新裝的輸入法,以後需要切換輸入法時長按輸入框即可.安卓系統如何切換輸入法 首先需要將您需要切換的輸入法下載在手機上 然後在菜單鍵-設置-語言和鍵盤/或者場所和文本裡面把安裝的輸入法打上勾 然後找個文本輸入框(就是可以輸入文字的窗口),一直點住文本輸入的框,會彈出輸入法,點它,然後選擇你需要輸入法就可以了。 安裝之後如果出現網頁不能縮放則重啟一次 4.如何設置wifi無線網路 主界面=>菜單=>設置=>無線和網路=>勾選WLAN,然後在WLAN設置中搜索到熱點,輸入密碼(有的話) 無線連接一直獲取ip地址的解決辦法:首先 進入你的無線路由器的設定頁面「比方在IE裡面輸入192.168.1.1什麼的 具體看自己的路由器 然後 找到「IP與MAC綁定"----」靜態ARP綁定設置「------再MAC與IP綁定規則那裡根據自己的手機搜索到的IP那個綁定的勾取消掉就可以了。查看手機的IP方法:菜單---設置---無線與網路---WALAN設置---自己鏈接的路由器名稱--出來的界面的最下面IP地址 補充說明下:把所有的 「綁定」全取消,發現手機的IP會變化 全取消就沒有問題了(ps:如果最後還是不能解決,將路由器和手機都恢復下出廠設置,然後再連接,非硬體問題肯定管用!) 5.安卓系統機器如何連接電腦 安卓系統連接電腦分不同的模式,根據需要來選擇,先檢查一下設置:目錄->設置->應用程序->開發->USB調試 選項是否有√選 然後下載以下任意一個驅動。 下載安裝好以後 手機用數據線連接好電腦 就會自動提示連接。然後將手機左上角的USB圖標拖下 HTC手機選擇(磁碟驅動)三星/MOTO及其它機型選擇大容量存儲選擇好後。 手機就會自動連接電腦(不同的系統和版本在連接電腦的方式上有些區別。塞班系統一般連接時自動提示,根據需要選擇相應模式:讀取存儲卡的內容(前提是插了卡,手機自身內存上的文件不能讀取的),選擇大容量模式;連接套件更新地圖之類的,選擇pc套件模式(前提是電腦上已經安裝好對應的軟體)。 安卓系統連接後,有的版本也是會自動提示,對應選擇就可以;如果不提示,一般在手機屏幕左上角往下拉,可以選擇模式。有個別異常情況:連接後顯示僅充電。這個在手機設置,連接電腦pc里找一下,默認連接模式改一下就可以了 ,一般是有磁碟驅動器模式,htc sync模式,僅充電模式,同步模式。經常有客戶反饋,電腦上彈出新硬體,這個一般都是模式沒選擇好) 6.安卓系統安裝軟體方法 方法1.手機里如果已經安裝好文件管理器,可以將需要安裝的文件復制到存儲卡,然後從手機里打開安裝就可以了。 方法2.如果沒有文件管理器,可以先安裝文件管理器然後按方法1來操作,或者直接通過連接電腦來安裝(文件管理器的安裝也是運用此方法)具體連接電腦安裝的方法:電腦上下載91助手/豌豆夾並安裝到電腦, 手機選擇usb調試模式連接電腦,電腦上91助手/豌豆夾識別到手機連接後,在91助手/豌豆夾里左側程序管理,已安裝的程序,添加,找到您需要安裝的軟體打開就會自動安裝。 7.如何安裝在論壇中下載的APK軟體/游戲? 如下步驟:菜單,設置,應用程序,允許安裝未知源,設置為允許;然後用數據線連接手機與電腦,在手機上的彈出菜單中選擇「安裝(有的手機顯示的是『大容量存儲器』),此時手機就充當了讀卡器的作用,在我的電腦中會出現新的盤符,將apk文件復制到存儲卡中,拔下數據線,在手機的文件管理器中瀏覽到你復制到卡中的APK文件,執行即可安裝。
E. Android通過OKhttp從伺服器端獲取數據
①簡單的非同步Get請求
第一步,創建OKHttpClient對象
第二步,創建Request請求
第三步,創建一個Call對象
第四步,將請求添加到調度中
不多說,直接上代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//okHttp的基本使用 --- get方法
String url = "https://api.douban.com/v2/movie/top250?start=0&count=10";
//1,創建OKHttpClient對象
OkHttpClient mOkHttpClient = new OkHttpClient();
//2,創建一個Request
Request request = new Request.Builder().url(url).build();
//3,創建一個call對象
Call call = mOkHttpClient.newCall(request);
//4,將請求添加到調度中
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
if (response.isSuccessful()) {
final String message = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
tv_message.setText(message);
progressBar.setVisibility(View.GONE);
}
});
}
}
});
F. 如何在Android開發中用HttpClient連接網路數據
HttpClient網路訪問
一、HttpClient網路訪問:
(一)、簡介:
1、Apache組織提供了HttpClient項目,可以實現網路訪問。在Android中,成功集成了HttpClient,所以在Android中可以直接使用HttpClient訪問網路。
2、與HttpURLConnection相比,HttpClient將前者中的輸入、輸出流操作,統一封裝成HttpGet、HttpPost、HttpRequest類。
HttpClient:網路連接對象;
HttpGet:代表發送GET請求;
HttpPost:代表發送POST請求;
HttpResponse:代表處理伺服器響應的對象。
HttpEntity對象:該對象中包含了伺服器所有的返回內容。
3、使用步驟:(六部曲)【重點】
創建HttpClient對象:通過實例化DefaultHttpClient獲得;
創建HttpGet或HttpPost對象:通過實例化 HttpGet或HttpPost 獲得,而構造方法的參數是urlstring(即需要訪問的網路url地址)。也可以通過調用setParams()方法來添加請求參數;
調用HttpClient對象的execute()方法,參數是剛才創建的 HttpGet或HttpPost對象 ,返回值是HttpResponse對象;
通過response對象中的getStatusLine()方法和getStatusCode()方法獲取伺服器響應狀態是否是200。
調用 HttpResponse對象的getEntity()方法,返回HttpEntity對象。而該對象中包含了伺服器所有的返回內容。
藉助EntityUtils的toString()方法或toByteArray()對 HttpEntity對象進行處理,也可以通過IO流對 HttpEntity對象進行操作。
(二)、封裝HttpClientHelper工具類:
public class HttpClientHelper {
public static HttpClient checkNetwork(String url) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse httpResponse = null;
try {
httpResponse = httpClient.execute(request);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
return httpClient;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 作用:實現網路訪問文件,將獲取到數據儲存在文件流中
*
* @param url
* :訪問網路的url地址
* @return inputstream
*/
public static InputStream loadFileFromURL(String url) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet requestGet = new HttpGet(url);
HttpResponse httpResponse;
try {
httpResponse = httpClient.execute(requestGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = httpResponse.getEntity();
return entity.getContent();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 作用:實現網路訪問文件,將獲取到的數據存在位元組數組中
*
* @param url
* :訪問網路的url地址
* @return byte[]
*/
public static byte[] loadByteFromURL(String url) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet requestGet = new HttpGet(url);
try {
HttpResponse httpResponse = httpClient.execute(requestGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toByteArray(httpEntity);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("====>" + e.toString());
}
return null;
}
/**
* 作用:實現網路訪問文件,返回字元串
*
* @param url
* :訪問網路的url地址
* @return String
*/
public static String loadTextFromURL(String url) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet requestGet = new HttpGet(url);
try {
HttpResponse httpResponse = httpClient.execute(requestGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toString(httpEntity, "utf-8");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 作用:實現網路訪問文件,先給伺服器通過「GET」方式提交數據,再返回相應的數據
*
* @param url
* :訪問網路的url地址
* @param params
* String url:訪問url時,需要傳遞給伺服器的參數。
* 第二個參數格式為:username=wangxiangjun&password=123456
* @return byte[]
*/
public static byte[] doGetSubmit(String url, String params) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet requestGet = new HttpGet(url + "?" + params);
try {
HttpResponse httpResponse = httpClient.execute(requestGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toByteArray(httpEntity);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 作用:實現網路訪問文件,先給伺服器通過「POST」方式提交數據,再返回相應的數據
*
* @param url
* :訪問網路的url地址
* @param params
* String url:訪問url時,需要傳遞給伺服器的參數。 第二個參數為:List<NameValuePair>
* @return byte[]
*/
public static byte[] doPostSubmit(String url, List<NameValuePair> params) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost requestPost = new HttpPost(url);
try {
requestPost.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
HttpResponse httpResponse = httpClient.execute(requestPost);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toByteArray(httpEntity);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 作用:實現網路訪問文件,先給伺服器通過「POST」方式提交數據,再返回相應的數據
*
* @param url
* :訪問網路的url地址
* @param params
* String url:訪問url時,需要傳遞給伺服器的參數。 Map<String , Object>
* @return byte[]
*/
public static byte[] doPostSubmit(String url, Map<String, Object> params) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost requestPost = new HttpPost(url);
List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
try {
if (params != null) {
for (Map.Entry<String, Object> entry : params.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString();
BasicNameValuePair nameValuePair = new BasicNameValuePair(
key, value);
parameters.add(nameValuePair);
}
}
requestPost
.setEntity(new UrlEncodedFormEntity(parameters, "utf-8"));
HttpResponse httpResponse = httpClient.execute(requestPost);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toByteArray(httpEntity);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}