Tuesday, April 24, 2018

Android soundtouch jni引用

準備,最近網友問問題,變調要使用哪一種lib
soundtouch開始下載然後呢

裝完
讓我們
下載下來
https://www.jianshu.com/p/41e0e39031bb
照著這位大神作下來


然後呢跟大神不一樣加上這行
APP_ALLOW_MISSING_DEPS :=true



近來嚕

參考
https://blog.csdn.net/wkw1125/article/details/63807128
https://www.jianshu.com/p/41e0e39031bb

Monday, April 23, 2018

Android include source form github (exoplayer) add funaction

引用


當一個專案只能透過,但又想改裡面的函數怎麼辦?
下面會來用一個例子從引用到,修改其函數與新增
com.google.android.exoplayer:exoplayer-ui:r2.7.4

但是當你要修改裡面的源碼要怎麼辦呢?

Java 反射調用(x)



失敗= = 可能要用下面方法引用在進行調用,才會成功改天再測試


這邊簡單帶過,知道有這方法就好,大家自己去研究

Github取得舊的原始碼





這邊就可以嚕~

新增一個funaction?


可不可行?當然可以 

https://github.com/google/ExoPlayer/
compile 'com.google.android.exoplayer:exoplayer:2.7.3   <--卡頓

https://github.com/yusufcakmak/ExoPlayerSample
compile 'com.google.android.exoplayer:exoplayer:r2.5.1  <--卡頓
找來找去還是一樣同一個source code,但是為什麼,後者執行沒問題,最新版執行卻是卡頓呢?
大家第一個反應可能是函數有問題,會先降等級所以我就先降等級

起初以為是build Tools version 有問題所以有四種可能性
套件版本有問題 編譯器版本過高
套件版本沒問題 編譯器版本過高
套件版本沒問題 編譯器版本正常
套件版本有問題 編譯器版本正常
這邊全部試下來發現
2.7.3編譯的時候 需要build Tools version為27 而且 compile 要改成implementation
r2.5.1編譯的時候 build Tools version預設為25 條至27 也沒問題 
初步判斷為 套件版本有問題
這樣看來我們是要用下面的r2.5.1做為開發的基底了



反射調用沒用的話怎麼辦?
這時候就要把源碼弄到本地端進行程式碼修改了

大家等級都很高我就不說怎樣調用了

path的資料夾地點
這時候我把r2.5.1,又生到了2.73 這時候很奇怪這個時候的話我在r2.51 build app 卻也沒發生問題?


為了求證我們把兩個版本替換到我總共替換兩個
2.73 失敗
2.6  成功
2.54 成功(不考慮後續會說位啥不用
引用成功後


小插曲
import com.google.android.exoplayer2.source xxx有一個hls的包遺失,我們把她槓掉就沒事了


當一個專案只能透過 
深入解析
當要修改別人的源碼呢,挖個link,上看千行怎麼辦?

這邊可以做整個資源的搜尋,我們可以透過這個搜尋我們要尋找的某個程式碼片段
大家可以看到我那時要開發一個升降key的,後來又發現要切換聲道,後來慢慢拆解後發現
她是透過一層一層呼叫,各種神呼叫





挖,要改到死诶,還不一定對,所以呢我們要盡量避開這種大改,我們小改就好
在不破壞原先結構的函數,我們盡量找小的地方改就好所以呢?

setVolume 我們就單弄這幾個函數就好
我們嘗試把它弄成
setVolume2






動這六個檔案,我們就可以產生一個函數了,為什麼要用這樣呢,因為我要改裡面
AudioTrack裡面有一個函數
原本是
setVolume(volume);
但是我要用下面的
setStereoVolume(volume, volume2);


可以切換左右聲道,需要傳遞兩個變數,可以看到
handleMessage(int messageType, Object message) throws ExoPlaybackException {
可能要改成
handleMessage(int messageType, Object message, Object message) throws ExoPlaybackException {


我以為Object可以傳遞陣列 結果也不行,懶得改的結果就想到了這個方法
那麼我只要
setVolume2(volume);
this.volume2=volume
存入class變數就好
-----------------------------
setVolume(volume);
this.volume=volume
的時候將會調用
setStereoVolume(volume, volume2);
這樣的話就可以切換左右聲道了

源碼就不提供囉,保密(o

為什麼不引用原先的r2.53的?





原先的缺少該目標DefaultAudioSink,沒辦法找到AudioTrack進行的修改

Monday, April 9, 2018

Android 工具人app

功能介紹


以前的課專,忘記上傳解說一波。





一個類似UBER的APP可以延伸運用
但是不向UBER只侷限開車也很像神奇寶貝GO的抓寶地圖



這APP打算用資料庫和GPS Or WIFI定位和GOOGLE MAP地圖
功能的基本:就是可以任意在地圖上留下訊息,在下面欄位那邊可以搜尋之前的人所留留下的訊息點擊該marker可以觀看在該點下更多訊息,搜尋提供直觀的你的位置到對方位置在你搜尋時可以動態的觀看到線該線可以很清楚的看到你與留下訊息的人的距離

功能


在地圖上點及任何一點,可以對該點設置你想說的話,將會插入一筆資料
此筆資料可以有你的姓名和你想留下的資料,系統會產生時間戳記到這筆
資料下方也有搜索欄位我們可以透過搜索欄位對所有留下資料的做搜尋,
而點擊下方搜索欄位將會產生一條線和移動至該點,在搜尋欄位中做搜尋
的話可以將繪畫多條線到目前你的位置,可以很直觀的看到位於你最近的
人或服務在哪。

如何呼叫mysql


Android 呼叫 網頁php 透過post將指令送出 到mysql,mysql 回傳資料json
則我們將對這串資料做處理。

重要功能


負責呼叫mysql 指令
製作動態搜尋,並畫線
為搜尋欄位新增監聽事件
Init()
searchitem(String textToSerch)
點擊地圖上marker則會顯示該點會下所有的訊息(可以該點多筆資料
點擊該點則會顯示該點座標位置。

query.php




MapsActivity.java layout



MainActivity.java layout



負責呼叫mysql 指令




製作動態搜尋,並畫線


如果點擊所有訊息則將會將會去跟mysql取的資料,然後將取得的資料丟到list <string> list裡面
製作list搜尋欄位呢,我們要一個搜尋框,和所有資料,
我們將會回傳資料存到list然後必須在搜尋框那邊新增一個監聽事件。

回傳資料存到list




為搜尋欄位新增監聽事件




Init()




searchitem(String textToSerch)




點擊地圖上marker則會顯示該點會下所有的訊息(可以該點多筆資料




點擊該點則會顯示該點座標位置






Thursday, April 5, 2018

三系統共存之謎

kali linux + windows + mac


在大一的時候呢 我做了一個夢然後過程呢我的雲端硬碟出現一個網址
好像疑似工具包
然後呢我裝
我電腦架構是ge60 2pe
我裝的時候呢 grub 是用Clover grub 四葉草
然後我設定主系統windows 灌在uefi
然後切到legacy 先灌kali linux 
再切進去kali linux 做grub抹除動作好像有用到gpt 磁區重新規畫的東東
然後再去灌mac os 接下來 因為進去mac os 因為黑蘋果的話呢,我好像是用mac osx
然後呢 切進去 系統抓不到 系統顯示卡呢,所以分辨率會抓不到,這時候,可以透過
修改系統的config,FakeSMC 去修改驅動 之類的 ,那軟體好像是一根胡蘿波
修改完後 沒有wifi驅動放棄沒辦法,顯示卡驅動,你要先考慮cpu 在市面上
已經發售的蘋果電腦所使用的,cpu 這樣我們就可以透過修該config ,去詐欺系統
改顯示卡的型號,重新開機 進入四葉草grub就可以看到三系統啟動了 grub 那邊mac os
可能要修改一下系統啟動 參數詳情 因為夢太久忘了,等我心血來潮,說不定能再重新做一次呢。

Tuesday, April 3, 2018

c# Serial Arduino or Rs232

Serial Port 參數設定


下面程式碼將會將一個基本的傳輸程式碼介紹包括避開在面臨開發的一些難題,修正網路上程式碼可能會發生當機的地方加以修正。
那麼開始吧

直接上code惹


serial