Android入門(二)

1.請求網絡

1.1Android中如何請求網絡

  • Android中原本自帶了Httpclient,用來實現網絡請求,但在新版本中已經移除了
  • HttpURLConnection,API簡單,體積較小,非常適用於Android這樣的移動設備
  • 真實項目中會選擇一些網絡框架,Android/Java開發大多爲Okhttp框架,它支持HTTP,HTTP/2協議。同時有很多特性是HttpURLConnection、Httpclient所不支持的。

1.2添加網絡訪問權限

AndroidManifest.xml添加以下代碼:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

ps:從Android6.0開始做動態處理權限,將targetSDK設置爲22就不用動態處理權限。
但如果想上傳至Google play,需要的版本最低爲26

1.3添加OkHttp依賴

OkHttp是一個第三方框架,需要添加依賴才能使用。

implementation 'com.squareup.okhttp3:3.14.0'
設置JDK兼容版本:
android {
    ...
    compileOptions{
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

1.4發送GET請求

    //創建OkHttpClient,建議一個應用只有一個
    private OkHttpClient okHttpClient = new OkHttpClient();
public void getNetworkData(View view) {
        //創建一個線程,這裏學習的同步請求
        //因爲Android不予許在主線程中請求網絡,當然也可以在AsynTask這樣的異步遷移任務裏面同步調用
        new Thread(){
            @Override
            public void run() {
                super.run();

                //創建一個Request,裏,麪包括你要請求的網址等信息,同時這個類是構建者模式
                 Request request = new Request.Builder().url("https://www.baidu.com").build();

                try {
                    //調用newCall方法,傳入剛剛創建的Request對象,然後調用execute方法來執行這個請求
                    Response response = client.newCall(request).execute();

                    //通過調用response的body上的string方法可以得到流的字符串
                    String result = response.body().string();

                    //將返回的字符串打印到日誌,這裏不能直接將數據設置到界面上,因爲子線程不能操作界面(Android規定)
                    Log.d("TAG",result);
                    
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();

    }

總結:

  • 不管是異步還是同步都是先創建OkHttpClinet,建議全局只有一個
  • 然後只有Request的內部類Builder來創建一個Request,並設置網址
  • 調用newCall方法傳入request
  • 抵用newCall方法返回的Call對應上面的execute來執行這個請求
  • 調用response的isSuccessful方法來判斷是否請求成功
  • 調用response的body的string方法來獲取一個字符串
  • 調用response.body()的其他方法拿到bytes數組,輸入流等信息

1.5運行http請求

在Android9.0上默認禁用所有http請求,如果要使用http,在清單文件中添加:

android:usesCleartestTraffic='true'

1.6運行結果

在這裏插入圖片描述

2.常用的input命令

ps:需先進入adb shell

2.1 輸入文本

input text test
input text "https:www.baidu.com"

2.2按鍵

input keyevent 3
按鍵代碼如下:
KEYCODE_UNKNOWN=0;	
KEYCODE_DPAD_CENTER=23;
KEYCODE_R=46;
KEYCODE_MINUS=69;
KEYCODE_SOFT_LEFT=1;
KEYCODE_VOLUME_UP=24;
KEYCODE_S=47;
KEYCODE_EQUALS=70;
KEYCODE_SOFT_RIGHT=2;
KEYCODE_VOLUME_DOWN=25;
KEYCODE_T=48;
KEYCODE_LEFT_BRACKET=71;
KEYCODE_HOME=3;
KEYCODE_POWER=26;
KEYCODE_U=49;
KEYCODE_RIGHT_BRACKET=72;
KEYCODE_BACK=4;
KEYCODE_CAMERA=27;
KEYCODE_V=50;
KEYCODE_BACKSLASH=73;
KEYCODE_CALL=5;
KEYCODE_CLEAR=28;
KEYCODE_W=51;
KEYCODE_SEMICOLON=74;
KEYCODE_ENDCALL=6;
KEYCODE_A=29;
KEYCODE_X=52;
KEYCODE_APOSTROPHE=75;
KEYCODE_0=7;
KEYCODE_B=30;
KEYCODE_Y=53;
KEYCODE_SLASH=76;
KEYCODE_1=8;
KEYCODE_C=31;
KEYCODE_Z=54;
KEYCODE_AT=77;
KEYCODE_2=9;
KEYCODE_D=32;
KEYCODE_COMMA=55;
KEYCODE_NUM=78;
KEYCODE_3=10;
KEYCODE_E=33;
KEYCODE_PERIOD=56;
KEYCODE_HEADSETHOOK=79;
KEYCODE_4=11;
KEYCODE_F=34;
KEYCODE_ALT_LEFT=57;
KEYCODE_FOCUS=80;//*Camera*focus
KEYCODE_5=12;
KEYCODE_G=35;
KEYCODE_ALT_RIGHT=58;
KEYCODE_PLUS=81;
KEYCODE_6=13;
KEYCODE_H=36;
KEYCODE_SHIFT_LEFT=59;
KEYCODE_MENU=82;
KEYCODE_7=14;
KEYCODE_I=37;
KEYCODE_SHIFT_RIGHT=60;
KEYCODE_NOTIFICATION=83;
KEYCODE_8=15;
KEYCODE_J=38;
KEYCODE_TAB=61;
KEYCODE_SEARCH=84;
KEYCODE_9=16;
KEYCODE_K=39;
KEYCODE_SPACE=62;
KEYCODE_MEDIA_PLAY_PAUSE=85;
KEYCODE_STAR=17;
KEYCODE_L=40;
KEYCODE_SYM=63;
KEYCODE_MEDIA_STOP=86;
KEYCODE_POUND=18;
KEYCODE_M=41;
KEYCODE_EXPLORER=64;
KEYCODE_MEDIA_NEXT=87;
KEYCODE_DPAD_UP=19;
KEYCODE_N=42;
KEYCODE_ENVELOPE=65;
KEYCODE_MEDIA_PREVIOUS=88;
KEYCODE_DPAD_DOWN=20;
KEYCODE_O=43;
KEYCODE_ENTER=66;
KEYCODE_MEDIA_REWIND=89;
KEYCODE_DPAD_LEFT=21;
KEYCODE_P=44;
KEYCODE_DEL=67;
KEYCODE_MEDIA_FAST_FORWARD=90;
KEYCODE_DPAD_RIGHT=22;
KEYCODE_Q=45;
KEYCODE_GRAVE=68;
KEYCODE_MUTE=91;

2.3點擊

input tap 120 225  //點擊座標x=120 y=225

2.4滑動

input swipe 300 1000 300 500  //x1,y1滑動到x2,y2,即向上滑動500像素
input swipe 120 225 120 225 2000 //在當前位置,按2秒鐘,相當於長按

3.常用的adb命令

詳見另一篇筆記:https://blog.csdn.net/zytthappy/article/details/79688227

4.項目打包

4.1更改軟件名稱

更改values文件夾下strings.xml中"app_name"內容:
<string name="app_name">測試Demo</string>

4.2更改app圖標

只需要更改清單文件中icon標籤所對應的圖標:
android:icon="@mipmap/ic_launcher"

圖標適配:應用中有一個mipmap-anydpi-v26目錄,如果是8.0及以上的系統就會使用該目錄的圖標,可以看到他不是個圖片,而是XML。如果不想適配,最簡單的方法就是刪除該目錄。
在這裏插入圖片描述

4.3創建簽名

  1. 點擊Bulid-Generate Signed Bundle / APK (生成一個簽名或APK)
  2. 選擇打包類型
  3. 創建簽名
    簽名只需創建一次,多個應用可以使用一個簽名,也可以使用多個;一個簽名文件中可以放多個簽名,簽名填寫信息如下:
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

4.4打包APK

  1. 填寫key和密碼
  2. 選擇打包類型
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章