[Android]代碼拾貝

1、點亮屏幕+跳過滑動鎖屏;

要實現軟電話的來電界面,響鈴亮屏之類的需求,看到微信語音通話能實現android端的跳過滑動鎖屏(密碼、手勢密碼類的沒法子了)
從一個 偽裝來電的應用里“學”了一部分代碼片段,大致實現了這個需求;

        PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
        wlock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK
                |PowerManager.ACQUIRE_CAUSES_WAKEUP, "incomingcall");
        wlock.acquire();
        klock = ((KeyguardManager)
                getSystemService(KEYGUARD_SERVICE)).newKeyguardLock("Incomingcall");
        klock.disableKeyguard();

別忘了 離開時釋放這兩個 lock.
還有相關權限

    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

上面的方案存在問題,設置了密碼/圖案/指紋 后無法彈出
方案二,在來電Activity的 setContentView 前 加入

 getWindow().addFlags(
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

方案二 在小米和魅族上搞不起來,因為這倆貨增加了鎖屏顯示權限,默認關(魅族默認詢問)

          oncreate(....
           // 用方法一 亮屏,播放來電鈴聲,
          requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().addFlags(
                    WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                            |WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

這樣可以解決小米上的情況,但是魅族搞不起來,addFlags后魅族根本這個Activity就不彈出了。。。。。
放棄,或者放棄魅族(為魅族使用方案一)

2、Library Module 引入 aar包的問題;

如果直接在 Library Module 增加

repositories { flatDir { dirs 'aars' } }

dependencies {
    compile 'com.android.support:support-v4:23.4.0'
    compile(name: 'xxx', ext: 'aar')
}

就會出現下面層級的 Library Module 都會出現引用問題

解決方案是
New Module , 把 aar 導入為 aar module, 在需要的工程應用該module

3、判斷miui (獲取miui版本)

    // 不是 miui 則返回 空字符,miui則返回對應的版本
    public static String getMiuiVersion() {
        String line;
        BufferedReader input = null;
        try {
            //  華為 emui   命令  “getprop ro.build.version.emui”
            Process p = Runtime.getRuntime().exec("getprop ro.miui.ui.version.name");
            input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
            line = input.readLine();
            input.close();
        } catch (IOException ex) {
            return null;
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                }
            }
        }
        return line;
    }

4、跳轉當前應用的設置界面

        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        Uri uri = Uri.fromParts("package", this.getPackageName(), null);
        intent.setData(uri);
        startActivity(intent);

5、gradle 打包 bat [ANSI編碼]

echo ######## start ########
call gradlew.bat clean
echo ################ 別急,才剛剛開始  ##################
set curr_dir=%cd%
TortoiseProc /command:update /path:"%curr_dir%" /closeonend:1
call gradlew.bat assembleRelease

set 
echo %curr_dir%
set apk_dir=%curr_dir%\WindWCMS\wcmsMain\build\outputs\apk

echo 
echo ############################################
echo ################ Build OK ##################
echo ############################################
echo ##### 到這里去找你的apk文件吧 - %apk_dir%
echo ############################################
echo 
pause

6、Android 事件分發

Android 事件分發
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,268評論 25 708
  • 1,“文”字的上半部為“亠”部事業上出頭早,聰明好學,但也可能幫他人出頭,被他人利用。 2,下半部為一個相互交差的...
    陳奎罡閱讀 2,005評論 0 0
  • 實現UIScrollViewDelegate的代理方法 - (void)scrollViewDidScroll:(...
    tinaH閱讀 785評論 0 3
  • **小時候** 從我5歲開始我就開始不開心了,因為我有一個妹妹了。從姥姥媽媽開始不怎么給我買好吃的好玩的時候我...
    斜一一閱讀 622評論 2 1
  • 電影中的救贖,應該至少包含兩層含義。第一層是救贖對體制化的人,重新獲得希望,代表人物是Red,他可以說非常熟悉監獄...
    給自己寫的故事閱讀 373評論 0 0