• [uiautomator篇][11]wifi


    package com.softwinner.network.wifi;
    
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.net.wifi.WifiManager;
    import android.os.Bundle;
    import android.os.PowerManager;
    import android.os.RemoteException;
    import android.support.test.InstrumentationRegistry;
    import android.support.test.uiautomator.By;
    import android.support.test.uiautomator.UiDevice;
    import android.support.test.uiautomator.UiObject;
    import android.support.test.uiautomator.UiObjectNotFoundException;
    import android.support.test.uiautomator.UiSelector;
    import android.support.test.uiautomator.Until;
    import android.util.Log;
    
    
    import java.io.IOException;
    
    import static android.support.test.InstrumentationRegistry.getArguments;
    
    import static android.support.test.InstrumentationRegistry.getContext;
    import static org.junit.Assert.assertTrue;
    
    /**
     * @author liuzhipeng
     * Created by Administrator on 2017/6/27.
     */
    
    public class wifiBaseClass {
        private String packageName = "com.example.black.wifiswitch";
        private UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
        private String ssid ;
        private String password ;
        private String mLogTag ;
        private WifiManager mWifiManager;
    //    = (WifiManager) InstrumentationRegistry.getContext().getSystemService(Context.WIFI_SERVICE);
    
    
        public wifiBaseClass(Context context, UiDevice device, String SSID, String passwd, String logTag, String packName){
            mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            mDevice = device;
            ssid = SSID;
            password = passwd;
            mLogTag = logTag;
            packageName = packName;
        }
    
        /**
         * after connect wifi, check the network is available
         * @author liuzhipeng
         * @throws UiObjectNotFoundException
         * @throws InterruptedException
         */
        public void connectWifiAndCheckNetwork() throws UiObjectNotFoundException, InterruptedException {
    
            final String ssidStr = "com.example.black.wifiswitch:id/ssid";
            final String passwdIdStr = "com.example.black.wifiswitch:id/password";
            final String connectIdStr = "com.example.black.wifiswitch:id/Connect" ;
            Log.i(mLogTag,"trigger on wifi");
            triggerOnWifi();
            Log.i(mLogTag,"open wifiswitch apk");
            openApplication(packageName);
            Thread.sleep(5000);
            try {GetWiFiParameters();} catch (RemoteException e) {e.printStackTrace();}
            Log.i(mLogTag,"connect wifi: " + ssid);
            wakeupScreen();
            UiObject ssidObj = mDevice.findObject(new UiSelector().resourceId(ssidStr));
            ssidObj.setText(ssid);
            wakeupScreen();
            UiObject passwordObj = mDevice.findObject(new UiSelector().resourceId(passwdIdStr));
            passwordObj.setText(password);
            wakeupScreen();
            UiObject connectObj = mDevice.findObject(new UiSelector().resourceId(connectIdStr));
            connectObj.click();
            Thread.sleep(5000);
            assertTrue("wifi state not enabled", checkWifiState() == 3);
            Log.i(mLogTag, "check network available?");
            assertTrue("wifi network unavailable", isNetworkAvailable());
            Log.i(mLogTag, "network available");
        }
    
        /**
         * open third application:
         * @author liuzhipeng
         * @param packageNameStr
         */
        public void openApplication(String packageNameStr){
    
            try {mDevice.wakeUp();} catch (RemoteException e) {e.printStackTrace();}
            UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
            /* Start from the home screen*/
            mDevice.pressHome();
    
    //        final String launcherPackage = mDevice.getLauncherPackageName();
    //        assertThat(launcherPackage,notNullValue());
    //        try {mDevice.wakeUp();} catch (RemoteException e) {e.printStackTrace();}
    //        mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
    //                5000);
    
            // launch the app
            Context context = InstrumentationRegistry.getContext();
            final Intent intent = context.getPackageManager()
                    .getLaunchIntentForPackage(packageNameStr);
            // Clear out any previous instances
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            context.startActivity(intent);
    
            try {mDevice.wakeUp();} catch (RemoteException e) {e.printStackTrace();}
            // Wait for the app to appear
            mDevice.wait(Until.hasObject(By.pkg(packageNameStr).depth(0)),
                    5000);
        }
    
        /** get wifi parameters: ssid and password
         * @author liuzhipeng
         * @throws RemoteException
         */
        private void GetWiFiParameters() throws RemoteException {
    
            Bundle bundle = getArguments();
            if (bundle.getString("ssid") != null) {
                ssid = bundle.getString("ssid");
                if (bundle.getString("password") != null) {
                    password = bundle.getString("password");
                } else {
                    password = null;
                }
            }
        }
    
        /**
         * trigger on wifi
         * @author liuzhipeng
         */
        public void triggerOnWifi(){
    
    //        WifiManager mWifiManager = (WifiManager) InstrumentationRegistry.getContext().getSystemService(Context.WIFI_SERVICE);
            if (!mWifiManager.isWifiEnabled()) {
                mWifiManager.setWifiEnabled(true);
                try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}
            }
            checkWifiState();
        }
    
        /**
         * trigger off wifi
         * @author liuzhipeng
         */
        public void triggerOffWifi(){
    
    //        WifiManager mWifiManager = (WifiManager) InstrumentationRegistry.getContext().getSystemService(Context.WIFI_SERVICE);
            if (mWifiManager.isWifiEnabled()) {
                mWifiManager.setWifiEnabled(false);
                try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}
            }
            checkWifiState();
        }
    
        /**
         * check wifi state
         * @author liuzhipeng
         * @return wifiState
         */
        public int checkWifiState(){
    
    //        WifiManager mWifiManager = (WifiManager) InstrumentationRegistry.getContext().getSystemService(Context.WIFI_SERVICE);
            int tempInt =  mWifiManager.getWifiState();
            switch (tempInt){
                case 0:
                    Log.i(mLogTag, "wifi state disabling");
                    break;
                case 1:
                    Log.i(mLogTag, "wifi state disabled");
                    break;
                case 2:
                    Log.i(mLogTag, "wifi state enabling");
                    break;
                case 3:
                    Log.i(mLogTag, "wifi state enabled");
                    break;
                case 4:
                    Log.i(mLogTag, "wifi state unknown");
                    break;
                default:
                    break;
            }
            return tempInt;
    
        }
    
        /**
         * @author liuzhipeng
         * check network is available
         * @return true if networkAviabile else false
         */
        public static boolean isNetworkAvailable(){
    
            ConnectivityManager connectivityManager = (ConnectivityManager) InstrumentationRegistry.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = connectivityManager.getActiveNetworkInfo();
            return (info != null && info.isConnected() && (info.getType() == ConnectivityManager.TYPE_WIFI));
        }
    
        /**
         * wakeup screen
         * @author liuzhipeng
         */
        public void wakeupScreen(){
            Context context = InstrumentationRegistry.getContext();
            PowerManager pm=(PowerManager) context.getSystemService(Context.POWER_SERVICE);
            PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK,"bright");
            wl.acquire();
            wl.release();
        }
    
        public void quitApplication(String packageNameStr)
        {
            try {
                mDevice.executeShellCommand("am force-stop "+ packageNameStr);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
        public void goToSleep(){
            Context context = InstrumentationRegistry.getContext();
            PowerManager pm =(PowerManager) context.getSystemService(Context.POWER_SERVICE);
    //        pm.goTosleep()
            PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ON_AFTER_RELEASE| PowerManager.PARTIAL_WAKE_LOCK,"wakeLockUtil");
            wl.acquire();
            wl.release();
    
        }
    }
  • 相关阅读:
    读书笔记:HTML5的Doctype
    2017/09/06~2017/09/10:算法练习小记
    (分治)7617:输出前k大的数
    (递归)7215:简单的整数划分问题
    (递归)2106:Boolean Expressions
    (递归)8758:2的幂次方表示
    (递归)1750:全排列
    (枚举)8469:特殊密码锁
    关于使用unigui、webxone、mysql的几个问题
    DELPHI-Delphi常用类型及定义单元
  • 原文地址:https://www.cnblogs.com/liuzhipenglove/p/7102219.html
Copyright © 2020-2023  润新知