發表文章

目前顯示的是 2019的文章

191230 Associate Android Developer

https://developers.google.com/certification/associate-android-developer 200101 Study guide https://developers.google.com/certification/associate-android-developer/study-guide/?authuser=0 Android core User interface Data management Debugging Testing  Android core Android Developers -> Toasts Android Developers -> Snackb ar > https://developer.android.com/training/snackbar Android Developers -> Localize your app App resources overview https://developer.android.com/guide/topics/resources/providing-resources.html?authuser=0 > Projects overview https://developer.android.com/studio/projects?authuser=0#mipmap   >> Add a module for a new device https://developer.android.com/studio/projects/add-app-module.html?authuser=0 >>> Create a library module https://developer.android.com/studio/projects/android-library.html?authuser=0#CreateLibrary Android Developers -> Application fundamentals Android Developers -> Create a notific

191225 Kotlin Smart cast to xxx is impossible, because yyy is a mutable property that could have been changed by this time.

Smart cast to xxx is impossible, because yyy is a mutable property that could have been changed by this time. 如果您遇上了以上的錯誤訊息 可參考以下連結中解答裡的第二種方法 https://stackoverflow.com/questions/44595529/smart-cast-to-type-is-impossible-because-variable-is-a-mutable-property-tha 如果想要對 let 做進一步的了解 可參考以下連結中的文章 https://medium.com/@elye.project/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84

191218 Android RecyclerView

androidx RecyclerView 使用 RecyclerView 有兩個重點 1. LayoutManager 2. Adapter 1. LayoutManager 就是看您的 RecyclerView 所要使用的佈局 常用的有 LinearLayoutManager (一維) 與 GridLayoutManager (二維) 2. Adapter 使用的是 RecyclerView.Adapter<VH extends ViewHolder> 先來看 RecyclerView.ViewHolder class ExampleViewHolder( v:View ): RecyclerView.ViewHolder( v ) {} 再來看  RecyclerView.Adapter<VH extends ViewHolder> class ExampleAdapter: RecyclerView.Adapter<ExampleViewHolder>()  有三個 abstract method 要實作 1. getItemCount() : 回傳 RecyclerView 中要顯示的個數。 2. onBindViewHolder(VH holder, int position) : 要顯示的資料在此指派。   onBindViewHolder(VH holder, int position) { holder.itemView.tv_name.text = "aaa" } 3. onCreateViewHolder(ViewGroup parent, int viewType): RecyclerView 中的 item 所要使用的 View 在此建立。   onCreateViewHolder(ViewGroup parent, int viewType): ExampleViewHolder { val li = LayoutInflater.from( parent. context ) val v = li.inflate( R.layout.recyclerview_ex

191218 Android ConstraintLayout Guideline

今天在設計 STB 主畫面 老闆前幾天曾表達說 以畫面左邊為主選單 右邊的區域再看要顯示什麼 所以我想先以畫面的五分之一來做為主選單的寬度 (不確定適不適合,看過後再來調整) 最先想到的是用 LinearLayout layout_weight 使用 1 與 4 但之前看過一篇文章 其中建議使用 ConstraintLayout 但 ConstraintLayout 可以用比例的方式來呈現嗎? 我用關鍵字 "Android Constraintlayout quarter" (因為我一開始想用四分之一,所以用 quarter 下去找) 找到以下這篇 https://stackoverflow.com/questions/45652296/constraintlayout-how-to-have-a-view-be-half-the-screen-width-and-centered 他使用了 Guideline androidx 的 Guideline 文件如下 https://developer.android.com/reference/androidx/constraintlayout/widget/Guideline 其中講到 垂直的參考線,其寬度為 0 而水平的參考線,其高度為 0

191212 Kotlin JNI

這幾天在處理 JNI,了解到了以下幾點。 1. package 要一致 2. class name 要一致 3. Method signature 要一致(名稱、參數與回傳型別) 4. Method 數量要一致(沒用到的也要宣告) 5. static method 要放在 companion object 裡 6. static method 前還要加上 @JvmStatic 舉例如下: class JniKotlinExample {     companion object     {         // static field 放這裡         init         {             System.loadLibrary( "JNIname" )         } // Init         @JvmStatic         external fun staticMethod( i: Int ): String?     } // Companion Object     // instance field 與 Method 放這裡 } // Class JniKotlinExample

191204 EasyPermissions hasPermissions

如果在 Kotlin 中呼叫 EasyPermissions.hasPermissions( Context, String...) 此函式第二個參數為 vararg 可以直接把 Permission 一個一個傳入 例: EasyPermissions.hasPermissions( this, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_NETWORK_STATE ) 也可以將要判斷的 Permissions 以陣列的方式傳入 但在 Kotlin 中,必須在陣列前加上星號(*)才能正確的傳入。 例: val perms = arrayOf( Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_NETWORK_STATE ) EasyPermissions.hasPermissions( this, *perms ) 參考來源: https://github.com/googlesamples/easypermissions/issues/197 https://kotlinlang.org/docs/reference/functions.html      關鍵字:"variable number of arguments", "vararg"

191203 Android Realm

如果您遇上了以下這樣的問題 RealmException, xxx is not part of the schema for this Realm. 網路上的 Solution 都 try 過了一遍還是無解 可以看一下新增的 RealmObject / RealmModel 是否跟 RealmConfiguration 是在同一個 Module --- 如果不是同一個 Module 把新增的 RealmObject / RealmModel 移至 RealmConfiguration 所屬的 Module 中 此問題應該就可解決。

191129 iOS Auto Layout

目標: a. 元件垂直橫向顯示時皆置中。 b. 元件尺寸保持比例。 c. 垂直顯示時,元件左右與螢幕邊緣保持一定距離。 d. 橫向顯示時,元件上下與螢幕邊緣保持一定距離。 e. 在 iPad 上元件不得太大。 條件限制設定如下: ------------------------- a 設定方法: a.i 點選右下角的 "Align" 圖示 a.ii 在彈出式小視窗中勾選 "Horizontally in Container" 與 "Vertically in Container";此兩個項目的右手邊有個輸入框,預設值為 ".0",目前不需更改;該值應該是偏移量,有空可以輸入看看其元件放置的效果。 a.iii 點按 [Add Constraints] 之後在 Constraints 中會出現以下兩項 a.1 [元件].centerX = centerX       水平置中的設定 a.2 [元件].centerY = centerY       垂直置中的設定  ------------------------- b. 設定方法: b.i 點選右下角的 "Add New Constraints" 圖示 b.ii 在彈出式小視窗中勾選 "Aspect Ratio" b.iii 點按 [Add Constraints] 之後在該元件的 Constraints 中會出現以下項目 b.1 aspect = 1:1 ------------------------- c. 設定方法: c.i 點選右下角的 "Add New Constraints" 圖示 c.ii 在彈出式小視窗上半部的左右輸入框中,輸入左右兩邊要保持的距離;在輸入框中的右邊會有個白色倒三角形,點選後會有選項,建議選擇 "Safe Area"。 c.iii 檢查左右輸入框與中間元件圖示間的紅色間距圖示是否已變為亮紅色實線。 c.iv 點按 [Add Constraints] c.v c.i~c.iv 再操作一次 c.vi 在 Constraints 中,點選第一個 [元件].l

191127 Kotlin Coroutines

dependency kotlinx-coroutines-core dependencies { implementation ' org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2 ' }

191119 Collections shuffle

在 Kotlin 範例程式碼中看到以下 Code Collections.shuffle(list)   但 Android Studio 卻出現以下的 Warning   Call of java mutator shuffle on immutable Kotlin collection   ------------   找到的 Kotlin 文件如下。   fun   < T >   MutableList < T > . shuffle ( ) ------------ 於是把上面的程式碼改為 val mutableList = list. toMutableList () mutableList. shuffle () list = mutableList. toList ()

191029 Firebase Task continueWith

這幾天在看 Firebase 的 Call functions from your app https://firebase.google.com/docs/functions/callable 範例中,有一段程式碼如下 return functions .getHttpsCallable( "addNumbers" ) .call(data) .continueWith { task -> // This continuation runs on either success or failure, but if the task // has failed then task.result will throw an Exception which will be // propagated down. val result = task. result ?. data as Map<String, Any> result[ "operationResult" ] as Int }   functions com.google.firebase.functions.FirebaseFunctions https://firebase.google.com/docs/reference/android/com/google/firebase/functions/FirebaseFunctions  .getHttpsCallable( "addNumbers" )   "addNumbers" 為 Cloud Function 的名稱 getHttpsCallable 回傳的是 HttpsCallableReference https://firebase.google.com/docs/reference/android/com/google/firebase/functions/HttpsCallableReference.html .call(data) 傳入的是 addNumbers 可接受的

190904 文件目錄與 iCloud

如果你在 Finder 中看不到 "文件" 目錄,那應該是你開啟了 iCloud 的同步功能。 如習慣把檔案放在 "文件" 資料夾中,那就至 iCloud 把該功能關掉。 [系統編好設定] > [iCloud] > iCloud 雲碟 - [選項...] 將 [桌面與文件檔案夾] 取消勾選 這樣在 Finder 中就可以看到 "文件" 目錄了

190823 ISO 27001 A.17

A.17.1 永續資訊安全 Information security continuity 目標:永續資訊安全應嵌入進組織的永續經營管理系統中。   Objective: Information security continuity shall be embedded in the organization’s business continuity management systems. A.17.1.1 永續資訊安全之計劃   Planning information security continuity 組織應決定在不利的情況下,例如危機或災難期間,資訊安全與永續資訊安全管理之需求。   The organization shall determine its requirements for information security and the continuity of information security management in adverse situations, e.g. during a crisis or disaster.

190823 ISO 27001 A.16

A.16.1 資訊安全事故與改進之管理   Management of information security incidents and improvements 目標:確保資訊安全事故的管理採用一致且有效的方法,包括安全事件與弱點之傳遞。   Objective: To ensure a consistent and effective approach to the management of information security incidents, including communication on security events and weaknesses. A.16.1.1 責任與程序 Responsibilities and procedures 管理責任與程序應加以建立,以確保對資訊安全事故做出迅速、有效且有條理的回應。   Management responsibilities and procedures shall be established to ensure a quick, effective and orderly response to information security incidents. A.16.1.2 資訊安全事件之通報 Reporting information security events 資訊安全事件應儘速地透過適當的管理管道通報。   Information security events shall be reported through appropriate management channels as quickly as possible. A.16.1.3 資訊安全弱點之通報   Reporting information security weaknesses 應要求使用組織的資訊系統與服務之員工與承包商,在系統或服務中觀察到或有可疑的資訊系統弱點時,必須記錄並回報。   Employees and contractors using the organization’s information systems and services shall be required to note and report any obse

190821 ISO 27001 A.15

A.15.1 供應商關係之資訊安全 Information security in supplier relationships 目標:確保對供應商可存取之組織資產的保護。 Objective: To ensure protection of the organization’s assets that is accessible by suppliers. A.15.1.1 供應商關係之資訊安全政策 Information security policy for supplier relationships 減少與供應商存取組織資產之風險的資訊安全需求應與供應商協議並文件化。   Information security requirements for mitigating the risks associated with supplier’s access to the organization’s assets shall be agreed with the supplier and documented. A.15.1.2 供應商協議內闡明安全措施   Addressing security within supplier agreements 應與每個可能存取、處理、儲存、傳遞或為組織之資訊提供資訊基礎設施元件的供應商建立並協議所有相關的資訊安全需求。   All relevant information security requirements shall be established and agreed with each supplier that may access, process, store, communicate, or provide IT infrastructure components for, the organization’s information. A.15.1.3 資訊與通信技術供應鏈 Information and communications technology supply chain 與供應商之協議應包含解決資訊與通信技術服務以及產品供應鏈相關的資訊安全風險之需求。 Agreements with suppliers shall include r

190821 ISO 27001 A.14

A.14.1 資訊系統之安全需求   Security requirements of information systems 目標:確保資訊安全是整個資訊系統生命週期整體的一部份。此亦包含在公共網路上提供服務之資訊系統的需求。 Objective: To ensure that information security is an integral part of information systems across the entire lifecycle. This also includes the requirements for information systems which provide services over public networks. A.14.1.1 資訊安全需求分析與規格 Information security requirements analysis and specification 新資訊系統或對現存資訊系統的改善之需求,應將資訊安全相關需求包含在內。 The information security related requirements shall be included in the requirements for new information systems or enhancements to existing information systems. A.14.1.2 保護公共網路上之應用服務   Securing application services on public networks 新資訊系統或對現存資訊系統的改善之需求,應將資訊安全相關需求包含在內。   The information security related requirements shall be included in the requirements for new information systems or enhancements to existing information systems. A.14.1.3 保護應用服務交易   Protecting application services transactions 涉及到應用服務交易之資訊應加以保護,以防止