發表文章

目前顯示的是 1月, 2019的文章

Google的support package倒底最高可以用到哪版?

Goolge的support package倒底最高可以用到哪版? 直接查google文件 https://developer.android.com/topic/libraries/support-library/packages 寫這篇文章當下最高28.0.0版 dependencies { implementation "com.android.support:support-v4:28.0.0" implementation "com.android.support:support-v13:28.0.0" implementation "com.android.support:cardview-v7:28.0.0" implementation "com.android.support:appcompat-v7:28.0.0" }

Android Studio的buildToolsVersion到底哪裡看?

圖片
Android Studio的buildToolsVersion到底哪裡看? 我們常常載別人的repo要build的時候都會說缺少Build-Tools,到底有哪些是已經安裝的呢? Android Studio的上方選單:Tools → SDK Manager → 上方分頁 SDK Tools → 右下角勾選 Show Package Details 就可以看到你目前安裝的Build-Tools

Android Pie無法用adb shell執行沒有foreground service權限的service

Oreo的時候要求service要從背景叫起需要成為foreground service https://github.com/Mirochiu/system-alert-window-example/blob/master/app/src/main/java/com/mattfenlon/ghost/MainService.java Pie的時候進一步要求要加入權限android.permission.FOREGROUND_SERVICE https://github.com/Mirochiu/system-alert-window-example/blob/master/app/src/main/AndroidManifest.xml

Android播放器Audio Focus

最近在 github專案 中加入了Audio Focus的處理,Android的文件參考 這裡 主要針對多個App同時使用聲音播放時,導致使用者觀感不佳的問題進行調適,不過這個功能需要每個會使用聲音播放APP都遵循一定的處理才能達成。播放器的介接可以參考 googlesamples 。 想要獲取audio focus的app會發出下面這些要求: AudioManager.AUDIOFOCUS_GAIN 期待其他APP長期停止 AudioManager.AUDIOFOCUS_GAIN_TRANSIENT 期待其他APP暫時停止 AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK 期待其他APP暫時降低音量 AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE 期待所以有APP都暫時停止 其他APP會收到相關onAudioFocusChange事件 AudioManager.AUDIOFOCUS_GAIN 取得audio focus或是重新取得audio focus, 可恢復播放音量 AudioManager.AUDIOFOCUS_LOSS_TRANSIENT 暫時失去audio focus, 建議暫停/停止播放 AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK 暫時失去audio focus, 建議降低音量 AudioManager.AUDIOFOCUS_LOSS 長期失去audio focus, 建議停止播放 在專案中引用PlayerAdapter.java元件,而因為audios focus在Oreo(Android 8)有改過api,所以進行的小改,修改結果可查看 這裡 。

Android動態檢查並取得Camera和錄音權限

加入相依性,版本號隨著你的專案的SDK版本改變,我這裡用28 dependencies {     implementation 'com.android.support:support-compat:28.0.0'     implementation 'com.android.support:appcompat-v7:28.0.0' REF: https://developer.android.com/topic/libraries/support-library/packages 引用 import android.util.Log; import android.widget.Toast; import android.Manifest.permission; import android.content.pm.PackageManager; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; 你需要權限的函數     public void yourFunction(View view) { ...         if (!grantPermission()) return; ... } //自訂權限需求     final static int MY_PERMISSIONS_REQUEST = 1001; //檢查並取得權限     private boolean grantPermission() {         Log.d("PERM", "grantPermission");         boolean hasPerm = true;         int res;         res = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA);         if (PackageManager.PERMISSION_GRANTED != re

升級Android Studio 3.2.1後,有NDK的專案遭遇錯誤ABIs [armeabi] are not supported for platform...

升級Android Studio 3.2.1後,如果你的專案有用到NDK的部分可能會遇到下列問題 ABIs [armeabi] are not supported for platform. Supported ABIs are [arm64-v8a, armeabi-v7a, x86, x86_64]. Error configuring CMake server (.....).  (include)   CMakeLists.txt Open File CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage Configuring incomplete, errors occurred! 這時候就是說ndk部分要修改[armeabi]成[arm64-v8a, armeabi-v7a, x86, x86_64]之一 找到module的build.gradle,因為我專案的NDK lib是arm 32bit,所以ndk部分改成         ndk {             abiFilters 'armeabi-v7a'         }         externalNativeBuild {             cmake {                 abiFilters 'armeabi-v7a' 另外如果你的cmake原本有指定toolchain,也需要改一下,像是我的之前toolchain使用gcc,STL使用gnustl_static,他就會報"GCC is no longer supported. See   https://android.googlesource.com/platform/ndk/+/master/docs/ClangMigration.md." 這版AS目前的ndk toolchain會用clang,而STL會用c++_static,不指定toolchain和stl就會自動套用。         externalNative

升級Android Studio之後舊專案"No toolchains found in the NDK toolchains folder for ABI"

升級Android Studio 3.2.1之後舊專案沒有用到NDK也會跑出 "No toolchains found in the NDK toolchains folder for ABI..." 網路上有很多解法,比較前面都是要你去下載舊版的NDK完整包,再改Project的NDK路徑過去,但是我專案都沒用到NDK幹嘛載回來改路徑?? 另一種是改project的build.gradle,只要將gradle版本改成新版(和AS版本對應)就沒事了 AS 3.2.1用         classpath 'com.android.tools.build:gradle:3.2.1' AS 3.3用         classpath 'com.android.tools.build:gradle:3.3.0' ref:http://www.qingpingshan.com/rjbc/az/398486.html ref:https://hk.saowen.com/a/aecfec7ee76a9aa1261fe479e5ea7565b8f628ebcceec989ac20c2fc7f265e48 另外因為gradle tool升級所以gradle版本也要升級,所以打開gradle\wrapper\gradle-wrapper.properties修改distributionUrl AS 3.2.1用gradle tool版本4.6         distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip AS 3.3使用gradle tool版本是4.10.1         distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip 在build-tools比較後面的版本會順便寫建議修改內容 ERROR: No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-