原创 Android中常見的內存泄露分析

前言 Android應用因爲本身可用內存的限制,需要特別重視內存泄露的問題,本文總結了Android中常見的一些內存泄露原因及避免方式。 一、單例造成的內存泄露 由於單例的靜態特性使得單例的生命週期和應用的生命週期一樣長,這說明

原创 Mac使用Bundletool工具遇到的問題

Google Play要求8月1日前,所有應用都必須提供64位的支持,所以很多開發人員應該對上架在Google play的應用進行了改造,並且接入了google 提供的Android App Bundle。 官方AAB的介紹 https:

原创 Android 8.0出現的java.lang.IndexOutOfBoundsException: setSpan (-1 … -1) starts before 0

在我們應用的線上反饋中,收集到了一些如下到crash。只出現在Android 8.0的手機中。並沒有找到任何其他有用的錯誤信息。 Exception: java.lang.IndexOutOfBoundsException: setSp

原创 Android視頻編輯器(二)預覽、錄製視頻加上水印和美白磨皮效果

前言      這是視頻編輯器系列的第二篇文章,在上篇文章中,我們講解了利用OpenGl和SurfaceView進行視頻預覽,MediaCodec和MeidaMuxer進行視頻錄製和斷點續錄。而這篇主要會講解一下如何在預覽和錄製視頻的時候

原创 Android視頻編輯器(五)音頻編解碼、從視頻中分離音頻、音頻混音、音頻音量調節等

前言      這篇博客,主要講解的是android端的音頻處理,在開發Android視頻編輯器的時候,有一個非常重要的點就是音頻的相關處理。比如如何從視頻中分離音頻(保存爲mp3文件),然後分離出來的音頻如何單聲道和雙聲道互轉,還有就是

原创 Android視頻編輯器(一)通過OpenGL預覽、錄製視頻以及斷點續錄等

前言 如今的視頻類app可謂是如日中天,火的不行。比如美拍、快手、VUE、火山小視頻、抖音小視頻等等。而這類視頻的最基礎和核心的功能就是視頻錄製和視頻編輯功能。包括了手機視頻錄製、美白、加濾鏡、加水印、給本地視頻美白、加水印、加濾鏡、視頻

原创 SurfaceView的nativeUnlockCanvasAndPost 導致的沒有任何錯誤信息的IllegalArgumentException

最近項目裏面使用到了surfaceView,在子線程中進行頁面繪製,但是出現了一個莫名其妙的bug,該Exception,沒有什麼信息,無從判斷是什麼原因導致的 所以,需要我們去看看爲什麼會導致這樣的問題,我們的代碼是如下 if

原创 算法(五)最短路徑之Floyed-Warshall算法

前言算法中的最短路徑問題,是一個經典的算法問題。旨在尋找圖(由頂點和邊組成)中頂點到頂點間的最短路徑。而我們接下來的幾篇文章就會一起學習最短路徑問題中常用的Floyed-Warshall、Dijkstra、Bellman-Ford以及Be

原创 算法(七)最短路徑之Bellman-Ford算法

前言            前面兩篇文章,我們分別學習了Floyed-Warshall和Dijkstra算法。還有印象嗎?這篇文章我們就來學習一下另一種最短路徑的算法,Bellman-Ford算法和一些鄰接表的知識。在上篇文章中學習的Di

原创 Android的自定義View深入解析

前言 自定義View是每個Android開發人員,都必備的技能。當SDK提供的常規控件如TextView、Button等沒法滿足我們日常開發需求時候,就需要我們進行View的自定義。本文就從View的繪製過程、自定義View的分類、自定義

原创 okhttp、okio添加參數(addParams)出現的java.lang.IllegalArgumentException:Unexpected code point

這是我們項目,收集到的,用戶出現過不少次的一個問題。根據堆棧發現是出現在用戶修改自己的個人資料時出現的。 項目的網絡框架用的是okhttp,在bugly上的樣子如下圖 查看堆棧信息,找到拋出這個異常的地方,在okhttp的okio這個j

原创 android使用CMake進行jni編寫遇到的一些問題

前言          android studio 2.2之後出的CMake 讓jni的編寫方便了很多,使用CMake讓我們不在煩惱函數的定義,以前我們需要通過javah命令生成,jni規定的函數名,現在不需要了。他也讓我們可以很方便的

原创 算法(六)最短路徑之Dijkstra算法

前言在上一篇博客中,我們學習了最短路徑系列的第一種算法Floyd-Warshall算法來求解圖中點與點之間的最短路徑的問題。這篇博客我們就要來學習一下,求解單源最短路徑的一種算法:Dijkstra算法。具體問題還是幾個城市間的最短路徑問題

原创 算法(八)最短路徑之Bellman-Ford算法的隊列優化以及幾種最短路徑算法對比

前言從上篇博客的,Bellman-Ford算法介紹的最後一部分,我們指出,其實,可以對該算法進行進一步的優化。原因是因爲:其實在每一輪鬆弛操作結束後,就會有一些頂點已經求得其最短路徑。此後這些頂點的最短路徑的估計值就會一直保持不變,但是每

原创 Android視頻編輯器(三)給本地視頻加水印和美顏濾鏡

前言          在上兩篇文章中,我們分別實現了通過OpenGL預覽、錄製視頻,以及在預覽和錄製的時候加上視頻水印和美白效果,而作爲一個視頻編輯器,當然不僅僅是錄製視頻,也會有從本地選擇視頻,然後加上視頻水印、美白、濾鏡等效果,再進