亚洲色成人网站www永久,亚洲欧美人成视频一区在线,亚洲国产成人高清在线观看,亚洲精品久久久久久动漫,亚洲国产精品久久电影欧美

數(shù)據(jù)專(zhuān)欄

智能大數(shù)據(jù)搬運(yùn)工,你想要的我們都有

科技資訊

科技學(xué)院

科技百科

科技書(shū)籍

網(wǎng)站大全

軟件大全

國(guó)內(nèi)版的微信,登陸電腦端之后手機(jī)休眠就無(wú)法收到消息,等到再次打開(kāi)微信時(shí)才會(huì)收到。在微信上確認(rèn)過(guò)了沒(méi)有選擇關(guān)閉手機(jī)提示。電腦端退出似乎就正常了。 另外想問(wèn)一下,微信被 FCM 喚醒之后,是不是不會(huì)自己重新休眠,除非打開(kāi)手機(jī)再關(guān)閉? 系統(tǒng)是 Lineage 17.1
前沿探索
2020-08-18 03:04:22
感覺(jué)滑行輸入看上去快一些,但是因?yàn)闇?zhǔn)確度的原因經(jīng)常刪改,反倒很費(fèi)時(shí)間,而且滑行輸入感覺(jué)摩擦力很大,手指不怎么舒服如果是傳統(tǒng)的輸入方式,雖然看上去慢,但是可以通過(guò)只輸入輔音來(lái)提高輸入速度,刪改也要快不少,而且可以用多個(gè)手指輸入?;休斎刖秃茈y同時(shí)使用多個(gè)手指
前沿探索
2020-08-18 03:04:19
一直對(duì)安卓的安全性很擔(dān)憂,被反編譯的可能性很高,反編譯了竟然還能重新打包?。?!無(wú)語(yǔ)了
APP 用 360 免費(fèi)加固,不知道有沒(méi)有 5%的可能性被完美反編譯。
破解者用一個(gè)正常的賬號(hào)從服務(wù)器請(qǐng)求到正常的會(huì)員信息,途中無(wú)論用什么加密。
因?yàn)?APP 被反編譯了,在客戶(hù)端最終會(huì)得到解密后的明文。
破解者是不是就可以用解密的明文肆無(wú)忌憚地免費(fèi)用軟件,還重新打包拿去倒賣(mài)
這樣的局該如何破呢。。
好頭痛,還是異想天開(kāi)了?完全沒(méi)有思路了
前沿探索
2020-08-18 03:04:17
如題.Android 的各位小伙伴,這個(gè)問(wèn)題困擾大家多久了?有沒(méi)有解決辦法呢?
前沿探索
2020-08-18 03:04:12
微信各種小程序直播平臺(tái),實(shí)現(xiàn)在線觀看人數(shù)??增漲可以留聯(lián)系方式
前沿探索
2020-08-18 03:04:08
嘗試寫(xiě)了一個(gè) NDK 應(yīng)用,native 層代碼能成功調(diào)用,apk 包里也有 so 文件。手機(jī)上安裝后有 /data/app/pkgName/lib/arm64 目錄,但內(nèi)容是空的。 查看應(yīng)用的內(nèi)存 maps,和打開(kāi)的文件句柄都沒(méi)有發(fā)現(xiàn)加載 so 文件,但 so 中的代碼都已經(jīng)被執(zhí)行了,這個(gè)是在哪里加載的呢? 系統(tǒng)是 LineagesOS 16.0 對(duì)應(yīng) Android 9.
前沿探索
2020-08-18 03:04:05
隨著國(guó)內(nèi)越來(lái)越多應(yīng)用商店要求上傳 64 位 APK,Qigsaw 針對(duì) Base APK 和 Split APKs 基于 ABI 維度拆分的需求也迫在眉睫。因此,1.4.0 版本推出該功能,僅需一個(gè)配置,Qigsaw 將為您解決所有 APKs 的拆分。更多更新說(shuō)明,我已經(jīng)發(fā)布至 1.4.0 版本更新詳情說(shuō)明 ,請(qǐng)大家移步查看。 支持 Base APk 和 Split APKs 基于 ABI 維度拆分 ABI 。Qigsaw 會(huì)依據(jù)當(dāng)前應(yīng)用運(yùn)行的 CPU 架構(gòu)環(huán)境選擇對(duì)應(yīng) Split APKs 下載。 支持 Base APK 中 Activity 使用 Split APKs 中 Fragment 或 Resources 。 不再?gòu)?qiáng)制要求啟動(dòng)編譯命令中包含 qigsawAssemble${variantName.capitalize()}。 其他 bug fix 請(qǐng)參考 commit 提交。
感謝大家對(duì) Qigsaw 的支持,Github star 數(shù)離 1000 的目標(biāo)越來(lái)越近,歡迎大家點(diǎn)亮 star,多謝!
前沿探索
2020-08-18 03:04:02
我覺(jué)得那些那些優(yōu)化、那些 AI 算法,把照片拍得都失真了,反倒感覺(jué) iPhone 比較自然,如果花大幾千塊錢(qián)買(mǎi)的手機(jī),拍的照片全時(shí)“虛”的,感覺(jué)還不如自然的,應(yīng)該允許這種選擇吧(默認(rèn)不需要優(yōu)化,不需要 AI 調(diào)整)
前沿探索
2020-08-18 03:03:59
android 隱式調(diào)用 activity 打開(kāi)音頻文件第一次選擇打開(kāi)方式第二次就默認(rèn)上次打開(kāi)方式了
前沿探索
2020-08-18 03:03:56
詳情請(qǐng)戳-> https://www.androidweekly.io/android-dev-weekly-issue-287/
歡迎關(guān)注公眾號(hào):
前沿探索
2020-08-18 03:03:54
做了一個(gè)榮耀 30pro 和三星 s20 的對(duì)比評(píng)測(cè)視頻 鏈接https://www.bilibili.com/video/BV1kT4y1777N/ 還請(qǐng)輕點(diǎn)拍
前沿探索
2020-08-18 03:03:51
急迫地需要大家的幫助:
我是「冰箱 IceBox 」的獨(dú)立開(kāi)發(fā)者,相信點(diǎn)進(jìn)來(lái)的不少人之前可能都曾聽(tīng)說(shuō)過(guò)或用過(guò)。5 年多來(lái)它在各大市場(chǎng)共有 400 萬(wàn)以上的下載,至今仍有 20 萬(wàn)以上的月活。
最近半個(gè)月,它接連多次被 Google Play 下架。前 3 次的理由是「無(wú)法卸載」。
誠(chéng)然,如果以免 root 模式設(shè)置了冰箱,那么由于 Android 系統(tǒng)限制無(wú)法直接在桌面卸載。
為此冰箱在其設(shè)置內(nèi)明確提供了卸載選項(xiàng),并在 App 說(shuō)明、設(shè)置教程、設(shè)置成功后彈框等至少 3 處向用戶(hù)明確引導(dǎo)展示如何卸載。
5 年來(lái)我也從未聽(tīng)說(shuō)過(guò)任何正版用戶(hù)抱怨無(wú)法卸載。( 2 年前有一個(gè)破解版的搞破解把卸載功能搞掛了)
前幾次,我都通過(guò) Google Play 申訴渠道明確附上各個(gè)頁(yè)面截圖信息并通過(guò)了申訴,重新打包上架。而最近的一次,Google 甚至將狀態(tài)由「暫停」升級(jí)為了「下架」。理由讓我瞠目結(jié)舌: 關(guān)于“促成不誠(chéng)實(shí)行為”政策 我們不允許任何應(yīng)用以任何方式協(xié)助用戶(hù)誤導(dǎo)他人或提供用于實(shí)現(xiàn)欺騙性行為的功能,包括但不限于生成或促使生成身份證、社會(huì)保障號(hào)、護(hù)照、文憑、信用卡和駕照。應(yīng)用必須針對(duì)自身的功能和 /或內(nèi)容提供準(zhǔn)確的聲明、名稱(chēng)、說(shuō)明和相關(guān)圖片 /視頻,并按用戶(hù)合理預(yù)期的方式運(yùn)行。即使應(yīng)用聲稱(chēng)是“惡作劇”或“純屬娛樂(lè)”(或其他類(lèi)似描述),也仍須遵守我們的政策要求。
思來(lái)想去,冰箱 IceBox 作為一款省電 App,完全和所謂「身份證、社會(huì)保障號(hào)、護(hù)照」沒(méi)有任何關(guān)系,也沒(méi)有任何「惡作劇」功能。所有功能都是用戶(hù)手動(dòng)觸發(fā)的。
已經(jīng)再次嘗試提交申訴,但感覺(jué)希望渺茫。一款幾百萬(wàn)用戶(hù)的 App,Google 想下架就下架,一個(gè)理由不通就隨便再找一個(gè),也太不負(fù)責(zé)了吧!
Google Play 在我的用戶(hù)群體中不到 1/10,Play Store 下架雖不會(huì)對(duì)我造成毀滅打擊,但會(huì)大量傷害現(xiàn)有的已從 Google 購(gòu)買(mǎi)的用戶(hù)。
請(qǐng)問(wèn)大家有類(lèi)似的經(jīng)歷嗎,如有的話如何應(yīng)對(duì)?或者如果你有渠道聯(lián)系 Google 審核團(tuán)隊(duì)也請(qǐng)伸出援手!在此非常感謝大家!
前沿探索
2020-08-18 03:03:48
安卓有沒(méi)辦法讓微信攝像頭掃自己手機(jī)屏幕上的二維碼?
微信一些二維碼需要攝像頭掃才行,長(zhǎng)按識(shí)別二維碼和掃一掃導(dǎo)入圖片都被提示必須攝像頭掃。 所以想:有沒(méi)辦法讓攝像頭掃自己屏幕上二維碼?
已經(jīng)想到的辦法: 1 、二維碼圖片傳到第二臺(tái)手機(jī),掃第二臺(tái)手機(jī)的屏幕——>可行,但有沒(méi)辦法不依賴(lài)第二部手機(jī)呢? 2 、是否有虛擬攝像頭應(yīng)用,可以指定圖片作為攝像頭獲取的圖像?——>沒(méi)找到手機(jī)的解決方案,虛擬機(jī)倒好像是有。 3 、把攝像頭設(shè)置成前置攝像頭,手機(jī)開(kāi)分屏模式,一半顯示二維碼一半掃一掃,然后掃鏡子?——>有點(diǎn)奇葩,但好像微信不能開(kāi)前置攝像頭掃一掃?
v 友還有好 ieda 嗎?
前沿探索
2020-08-18 03:03:46
當(dāng)一個(gè)掌握一定程度 android 原生開(kāi)發(fā)的人, 希望為自己的 APP 建立一套后端系統(tǒng)的時(shí)候, 從什么入手開(kāi)始學(xué)比較好呢?
比如是否掌握 Tomcat & Java Web 相關(guān)的技術(shù),就可以開(kāi)發(fā)后臺(tái),寫(xiě) api 了呢?
有沒(méi)有好書(shū)推薦?學(xué)這款書(shū):( https://item.jd.com/10066936.html )的方向是否正確?(這書(shū)挺厚,如果選錯(cuò)了時(shí)間成本有點(diǎn)大)
另外,想知道緩存型數(shù)據(jù)庫(kù)( redis 什么的)對(duì)一個(gè)日活 1 千左右的 app 后臺(tái)來(lái)說(shuō)是否必備,只用 mysql 會(huì)不會(huì)是無(wú)稽之談。
前沿探索
2020-08-18 03:03:43
https:¥// www.androidpolice.com/2020/06/30/ads-are-taking-over-samsungs-galaxy-smartphones-and-im-fed-up/
發(fā)個(gè)帖嘲諷一下,沒(méi)想到三星也要把自己降低到粗糧的水平...
所以現(xiàn)在能買(mǎi)的 Android 還有啥牌子?排除國(guó)產(chǎn),三星,還有歐洲小廠們,就只剩 Pixel 和 Xperia 了?
前沿探索
2020-08-18 03:03:41
想控制 app 的網(wǎng)絡(luò)連接,現(xiàn)在用的是 AFWall+,但是這個(gè)軟件是一刀切行為,上傳下載不能分開(kāi)控制有能分開(kāi)控制的軟件嗎?推薦下。
前沿探索
2020-08-18 03:03:38
在嘗試寫(xiě)一個(gè)非常簡(jiǎn)易的 app,里面需要建立一個(gè)嵌入式數(shù)據(jù)庫(kù)然后在 app 里實(shí)現(xiàn)一點(diǎn)簡(jiǎn)易的查詢(xún)排序功能。最初到網(wǎng)上爬到的數(shù)據(jù)建了個(gè) mongoDB 數(shù)據(jù)庫(kù),不知道怎么存在安卓安裝包里直接導(dǎo)入,遂查到可以用 realm 。但是運(yùn)行時(shí)建庫(kù)一直報(bào)錯(cuò): javassist.NotFoundException:io.realm.com_get_quick_medical_helper_MainActivity3$1UserRealmProxyInterface 求大佬解惑,或者有其他解決辦法曲線救國(guó)也可,感激不盡!
https://github.com/xiayitian1003/Quick-Medical-Helper
前沿探索
2020-08-18 03:03:35
按照道理下面這個(gè) linearLayout 的 lparams{} 設(shè)置的參數(shù)不應(yīng)該是給 linearLayout,但 as 提示的是上一個(gè)層級(jí)的 relativeLayout,實(shí)際設(shè)置的效果也是給 relativeLayout 。
前沿探索
2020-08-18 03:03:32
有沒(méi)有什么好用的在線分析的平臺(tái)
除了我現(xiàn)在用的騰訊哈勃
還有自己搭建的 MobSF
最好是有動(dòng)態(tài)分析的
前沿探索
2020-08-18 03:03:30
這個(gè)只是學(xué)校里面的一些研究課題,不是正式的產(chǎn)品。
請(qǐng)教一下,現(xiàn)在主流的手機(jī)屏幕解鎖方式有密碼,手勢(shì)滑動(dòng),指紋,人臉識(shí)別等。我主要想研究下,設(shè)計(jì)一些新的解鎖方式,看看與傳統(tǒng)的解鎖方式,在安全性,易用性,速度等方面的對(duì)比。比如,手勢(shì)滑動(dòng)從現(xiàn)在的 9 個(gè)點(diǎn),增加到 16 個(gè)點(diǎn);手寫(xiě)簽名的方式進(jìn)行解鎖等。
因?yàn)橹皼](méi)有接觸過(guò)這方面的開(kāi)發(fā),想請(qǐng)教下,只是做些試驗(yàn), 需要什么樣的設(shè)備和條件呀? 從哪里可以找到手機(jī)解鎖相關(guān)的源代碼呀?
非常感謝!
前沿探索
2020-08-18 03:03:27
移動(dòng)互聯(lián)網(wǎng)給人們的生活帶來(lái)了極大的便利,但是隨著移動(dòng)互聯(lián)網(wǎng)市場(chǎng)的需求快速增長(zhǎng),移動(dòng) APP 的開(kāi)發(fā)與應(yīng)用也是成幾何級(jí)數(shù)量遞增,帶來(lái)的流量紅利逐漸被消耗殆盡,移動(dòng)應(yīng)用市場(chǎng)由增量變成存量,移動(dòng)互聯(lián)網(wǎng)發(fā)展開(kāi)始步入下半場(chǎng),在功能上得到最大化開(kāi)發(fā)的移動(dòng)應(yīng)用,因缺少安全防護(hù)開(kāi)始面臨接踵而來(lái)的安全問(wèn)題,安全威脅已經(jīng)成為制約移動(dòng) APP 發(fā)展的主要因素。------------------------------------------------------------------------------------------------------------------------------------ 逆向破解,竊取技術(shù) 核心技術(shù)是每家企業(yè)的立足根本,能夠直接影響產(chǎn)品在市場(chǎng)中的地位。比如機(jī)器學(xué)習(xí)算法的性能、圖片和視頻算法的處理速度和準(zhǔn)確性。目前產(chǎn)品競(jìng)爭(zhēng)激烈,部分企業(yè)為了快速追趕友商,會(huì)在暗地中使用逆向工程,提取友商產(chǎn)品的核心程序,并逆向分析其業(yè)務(wù)邏輯和算法,之后抄襲運(yùn)用在自己的產(chǎn)品中,搶占市場(chǎng)份額。 ------------------------------------------------------------------------------------------------------------------------------------ 破解軟件,非法盜版 目前大部分移動(dòng)應(yīng)用直接裸奔,沒(méi)有采取任何安全措施。部分應(yīng)用采用簽名校驗(yàn)、Dex 加殼等技術(shù)來(lái)杜絕盜版應(yīng)用,但是難以抵擋專(zhuān)業(yè)“黑客”的逆向破解,攻擊者利用 IDA 等逆向工具結(jié)合靜態(tài)和動(dòng)態(tài)手段,可以輕松破解軟件的防御機(jī)制,并肆意篡改代碼或植入病毒來(lái)竊取隱私數(shù)據(jù)。盜版應(yīng)用會(huì)嚴(yán)重危用戶(hù)的隱私數(shù)據(jù)和個(gè)人資產(chǎn),也嚴(yán)重影響企業(yè)的名譽(yù),甚至遭受監(jiān)管單位懲罰。 ------------------------------------------------------------------------------------------------------------------------------------ Android 常用加密支持對(duì) Android JNI 項(xiàng)目的 C/C++代碼進(jìn)行虛擬化、混淆、字符串加密等安全保護(hù)。該系統(tǒng)基于 Clang 編譯器擴(kuò)展實(shí)現(xiàn), 能夠?qū)?xiàng)目的源代碼進(jìn)行安全編譯,并且在編譯階段可以對(duì)指定的函數(shù)實(shí)施代碼虛擬化、代碼混淆等加密處理。其中代碼虛擬化功能憑借自定義 CPU 指令的特性,代碼一旦加密,永不解密,攻擊者無(wú)法還原代碼,分析核心業(yè)務(wù)邏輯??蓭椭写笮推髽I(yè)在通信、支付、算法、核心技術(shù)等模塊進(jìn)行深度加密,避免因逆向破解問(wèn)題造成的經(jīng)濟(jì)損失。 KiwiVM 為 NDK 插件模式,不改變?cè)虚_(kāi)發(fā)流程,完美支持 Jenkins 、Fastlan 等持續(xù)構(gòu)建工具。PC 端有多款 VM 加密產(chǎn)品,而?KiwiVM 是目前移動(dòng)端僅有的 VM 加密產(chǎn)品。 ------------------------------------------------------------------------------------------------------------------------------------ Android 加密技術(shù)特性 安全覆蓋全面 能夠保護(hù)應(yīng)用 Dex 文件和 So 文件,并且提供主動(dòng)防御保護(hù)機(jī)制,全面保護(hù) APP 安全; 安全強(qiáng)度高 獨(dú)家 Dex-Java2C 和源碼虛擬化技術(shù)配合使用,對(duì) Java 代碼進(jìn)行高強(qiáng)度加密,可抵擋專(zhuān)業(yè)黑客的逆向攻擊; 加密粒度細(xì) 以 Java/C/C++代碼的函數(shù)為單位進(jìn)行加密保護(hù),粒度細(xì)、可控性高、隱蔽性強(qiáng); 兼容性高 適配 APP 內(nèi)的各種業(yè)務(wù)邏輯,并且高級(jí)版的 Java2C 通過(guò)中間代碼進(jìn)行加密保護(hù),兼容性與原始應(yīng)用一致; 性能損耗低 Dex 加殼方案的啟動(dòng)時(shí)間增量小于 1s,是業(yè)界做得最好的方案。Java 函數(shù)級(jí)加密影響非常小,可以忽略不計(jì) ------------------------------------------------------------------------------------------------------------------------------------ 業(yè)務(wù)合作,請(qǐng)聯(lián)系 Android 加密: https://www.kiwisec.com/product/KiwiVM-so.html ios 代碼混淆: https://www.kiwisec.com/product/KiwiVM-ios.html 公司: https://www.kiwisec.com/
前沿探索
2020-08-18 03:03:25
在 gradle 文件里添加了 kotlin 庫(kù)后,app 紅叉,報(bào)錯(cuò) Default Activity not found 。但是在 AndroidMenifest.xml 文件里定義了 MAIN 和 LAUNCHER 的 MainActivity 。請(qǐng)問(wèn)怎么解決這種問(wèn)題?
前沿探索
2020-08-18 03:03:21
最近看狀態(tài)欄鬧鐘圖標(biāo)不爽,感覺(jué)它完全是多余的。之前知道 adb 命令可以隱藏它,于是決定試一試。
首先執(zhí)行命令: adb shell settings put secure icon_blacklist alarm_clock
發(fā)現(xiàn)鬧鐘圖標(biāo)消失了,但多了一個(gè)不明圖標(biāo),感到很好奇。于是去看了 Android 源碼,發(fā)現(xiàn)了這樣的代碼: public static ArraySet getIconBlacklist(String blackListStr) { ArraySet ret = new ArraySet<>(); if (blackListStr == null) { blackListStr = "rotate,headset"; } String[] blacklist = blackListStr.split(","); for (String slot : blacklist) { if (!TextUtils.isEmpty(slot)) { ret.add(slot); } } return ret; }
原來(lái)在沒(méi)有設(shè)置的時(shí)候有個(gè)默認(rèn)值:"rotate,headset",而那個(gè)不明圖標(biāo)是屏幕旋轉(zhuǎn)的,所以解決辦法就簡(jiǎn)單了: adb shell settings put secure icon_blacklist rotate,headset,alarm_clock
前沿探索
2020-08-18 03:03:19
很高興見(jiàn)到你!
我是《 Jetpack MVVM 精講》和《 Jetpack MVVM 最佳實(shí)踐》的作者 KunMinX,
在過(guò)去一年里,我們分別在各渠道的維護(hù)和交流中,收集到許多新上手的小伙伴在把 Jetpack MVVM 應(yīng)用到自己項(xiàng)目中時(shí),最頻繁提及的問(wèn)題,
隨著 Jetpack MVVM 的普及,高頻問(wèn)題也越來(lái)越多地出現(xiàn)在 面試或重構(gòu)工作中,
考慮到這些四處分散的 Q&A (提問(wèn)和解答) 不便于新上手的小伙伴查閱,因而單獨(dú)準(zhǔn)備了本文,點(diǎn)開(kāi)就能直接查看到 從數(shù)百位讀者的數(shù)千次提問(wèn)中 精心篩選出的高頻 Q&A,
所以這樣的文章,從前乃至往后就只提供這么一篇,請(qǐng)珍惜地享用 ??
原文: https://juejin.im/post/5ef061d0e51d4573e71f3243
前沿探索
2020-08-18 03:03:16
報(bào)著個(gè)錯(cuò),ClassLoader referenced unknown path: system/framework/mediatek-cta.jar 網(wǎng)上查是缺少聯(lián)發(fā)科的包?各位壯士請(qǐng)賜教。
前沿探索
2020-08-18 03:03:13
心血來(lái)潮,打開(kāi)了 6p,發(fā)現(xiàn)里面的豌豆莢還在,但 play 商店不見(jiàn)了。在設(shè)置里顯示的是停用,但點(diǎn)進(jìn)去顯示的是開(kāi)啟。哪位大神指點(diǎn)下如何讓 play 商店恢復(fù)至菜單里。豌豆莢已經(jīng)卸載。
前沿探索
2020-08-18 03:03:11
audioManager.setSpeakerphoneOn(true)毫無(wú)效果
前沿探索
2020-08-18 03:03:08
如題。之前用過(guò) xender 和另外一個(gè)忘了名字的軟件,感覺(jué)都不好用,還會(huì)斷連。求推薦一個(gè)好用的,盡量是免費(fèi)的,謝謝。
前沿探索
2020-08-18 03:03:06
在其他 Android 手機(jī)上,比如華為 P30,Mate 20 和 Vivo X7,使用 48K 采樣率錄制的 PCM 數(shù)據(jù)頻率能到 24KHz, 但在 P30 Pro 上就只能錄制到 20KHz 以下的部分。如下圖:

有大佬遇到過(guò)這個(gè)問(wèn)題嗎?有沒(méi)有啥解決方案?
前沿探索
2020-08-18 03:03:02
最近 Play Store 上出現(xiàn)了很多好評(píng)語(yǔ)但是卻打了一星打 review,一直沒(méi)有想明白是為什么,直到有一天我打開(kāi)了 Play Store,發(fā)現(xiàn)在小分辨率手機(jī)上評(píng)分區(qū)域和“wirte a review"靠得非常近。于是我想明白了,很多人只想想寫(xiě)一個(gè)評(píng)論,但是不小心點(diǎn)到了一星,所以才出現(xiàn)了一星好評(píng)這種情況。
有朋友也遇到這種情況嗎?
前沿探索
2020-08-18 03:03:00
把修改過(guò)的 base.apk ,base.art ,base.odex,base.vdex 替換到 app 的安裝目錄,打開(kāi) app 可以看到修改,功能也正常使用,但是重啟之后 app 沒(méi)了。。是系統(tǒng)自動(dòng)刪除的嗎?這個(gè) feature 哪里可以關(guān)掉呀
前沿探索
2020-08-18 03:02:57
https://zhuanlan.zhihu.com/p/148352810 開(kāi)源庫(kù)地址: https://github.com/JeremyLiao/InterfaceLoader
前沿探索
2020-08-18 03:02:54
我是要通過(guò) USB 線連接記錄儀,記錄儀支持 UVC 協(xié)議,H.264 編碼格式。使用http://app.mi.com/details?id=com.shenyaocn.android.usbcamera USB 攝像頭 是可以正常預(yù)覽。我目前實(shí)現(xiàn)是參考 https://github.com/saki4510t/UVCCamera,這個(gè)庫(kù)支持 MJPEG,不支持 H.264 。這上面有一些參考,不過(guò)源碼沒(méi)有給全,沒(méi)留下聯(lián)系方式。我自己試著改了,有的改后返回 -51,有的無(wú)法返回空的 Format 列表,也不能正常顯示。 https://github.com/saki4510t/UVCCamera/issues/204 如果能取到 H.264 byte array,可以使用 https://github.com/wanliyang1990/wlmedia 展示。請(qǐng)問(wèn)有沒(méi)有做過(guò) UVC H.264 相關(guān)的?;蛘吣塬@取到 H.264 字節(jié)流也可以。 謝謝!
前沿探索
2020-08-18 03:02:51
Moon FM For Android下載地址: https://www.coolapk.com/apk/247869
前沿探索
2020-08-18 03:02:49
其他 app 最多也就百余次,只有這倆貨每天都穩(wěn)定的千次,甚至兩千次。
另外求推薦一個(gè)能記錄應(yīng)用被誰(shuí)喚起的 app,像 miui12 喚起記錄( /t/666878 )這樣的就行。
前沿探索
2020-08-18 03:02:46
看過(guò)了一段時(shí)間的 TASKER 作者抄襲事件又重新在這吵起來(lái)了。冰箱 APP 作者直接選擇去除了 TASKER 支持。 作為用戶(hù)我就很難受了,個(gè)人對(duì)這功能是強(qiáng)需求。 我甚至都不知道這件事,直到更新后一段時(shí)間才發(fā)現(xiàn)不支持了才去了解了下。 導(dǎo)致現(xiàn)在用得渾身難受。 現(xiàn)在也有個(gè)類(lèi)似的情況,APP OPS 最近大更新。 選擇移除了 ROOT 的支持,說(shuō)是 ROOT 不夠優(yōu)雅,必需要裝他自己的一個(gè) APP 用于啟動(dòng)。 你說(shuō)這叫什么事呀,裝個(gè) APP 事不大,但真是一句臥曹在心里。 我想知道作為用戶(hù)遇到這種情況怎么辦? 這兩 APP 本身很優(yōu)秀,沒(méi)說(shuō)的,但是作為付費(fèi) APP 就這樣莫名其妙的膈應(yīng)人。 真就是個(gè)人開(kāi)發(fā)隨心所欲嗎,愛(ài)用用不用滾嗎?
前沿探索
2020-08-18 03:02:43
我是使用 CameraX + ZXing 做個(gè)掃碼工具的(自用)
做完之后發(fā)現(xiàn)別的手機(jī)都能用,就我自己的 1+7P 不行…
幾經(jīng)測(cè)試,發(fā)現(xiàn)是隱藏了 toolbar 導(dǎo)致 imageProxy 里的圖片是花的
只有是否隱藏 Toolbar 的區(qū)別 false true
如圖,上面是預(yù)覽界,下面的黑白圖片是從 PlanarYUVLuminanceSource 里取的 val luminanceSource = PlanarYUVLuminanceSource(data, image.width, image.height, 0, 0, image.width, image.height, false) val pixels = luminanceSource.renderThumbnail() val bitmap = Bitmap.createBitmap(image.width / 2, image.height / 2, Bitmap.Config.ARGB_8888) bitmap.setPixels(pixels, 0, image.width / 2, 0, 0, image.width / 2, image.height / 2)
圖一有 toolbar 情況圖二沒(méi)有

CameraX + ZXing 代碼參考 -> [medium] ( https://medium.com/@msasikanth/qr-scanning-using-camerax-4757ed3687f8 )
小米 8 和另一部老手機(jī)都是可以的目前只在 1+7P OOS 上出了這個(gè)問(wèn)題…
對(duì)圖像這塊不熟,不知道這是哪兒出的問(wèn)題。
前沿探索
2020-08-18 03:02:41
源碼解析
谷歌推出 Navigation 主要是為了統(tǒng)一應(yīng)用內(nèi)頁(yè)面跳轉(zhuǎn)行為。本文主要是根據(jù) Navigation 版本為 2.1.0 的源碼進(jìn)行講解。 'androidx.navigation:navigation-fragment:2.1.0' 'androidx.navigation:navigation-ui:2.1.0' 'androidx.navigation:navigation-fragment-ktx:2.1.0' 'androidx.navigation:navigation-ui-ktx:2.1.0'
Navigation 的使用很簡(jiǎn)單,在創(chuàng)建新項(xiàng)目的時(shí)候可以直接選擇 Bottom Navigation Activity 項(xiàng)目,這樣默認(rèn)就已經(jīng)幫我們實(shí)現(xiàn)了相關(guān)頁(yè)面邏輯。
之前寫(xiě)過(guò) Navigation 相關(guān)的用法,請(qǐng)移步:
Android Jetpack 架構(gòu)組件 — Navigation 入坑詳解
Navigation 的源碼也很簡(jiǎn)單,但是卻涉及到很多的類(lèi),主要有以下幾個(gè): Navigation 提供查找 NavController 方法 NavHostFragment 用于承載導(dǎo)航的內(nèi)容的容器 NavController 通過(guò) navigate 實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn) Navigator 是一個(gè) abstract,有是個(gè)主要實(shí)現(xiàn)類(lèi) NavDestination 導(dǎo)航節(jié)點(diǎn) NavGraph 導(dǎo)航節(jié)點(diǎn)頁(yè)面集合
我們首先從 NavHostFragment 入手查看,因?yàn)樗侵苯佣x在我們的 XML 文件中的,我們直接查看器生命周期方法 onCreate: @CallSuper @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Context context = requireContext(); mNavController = new NavHostController(context); //1 mNavController.setLifecycleOwner(this); .... onCreateNavController(mNavController);//2 .... }
注釋 1 處 直接創(chuàng)建了 NavHostController 并通過(guò) findNavController 方法暴露給外部調(diào)用者。NavHostController 是繼承自 NavController 的。注釋 2 處代碼如下: @CallSuper protected void onCreateNavController(@NonNull NavController navController) { navController.getNavigatorProvider().addNavigator( new DialogFragmentNavigator(requireContext(), getChildFragmentManager())); navController.getNavigatorProvider().addNavigator(createFragmentNavigator()); }
通過(guò) navController 獲取 NavigatorProvider 并向其中添加了兩個(gè) Navigator,分別為 DialogFragmentNavigator 和 FragmentNavigator 。另外在 NavController 的構(gòu)造方法中還添加了另外兩個(gè) Navigator,如下: public NavController(@NonNull Context context) { .... mNavigatorProvider.addNavigator(new NavGraphNavigator(mNavigatorProvider)); mNavigatorProvider.addNavigator(new ActivityNavigator(mContext)); }
他們都是 Navigator 的實(shí)現(xiàn)類(lèi)。分別對(duì)應(yīng)于 DialogFragment 、Fragment 和 Activity 的頁(yè)面跳轉(zhuǎn)。大家可能對(duì)于 NavGraphNavigator 一些好奇,它是用在什么地方的呢? 其實(shí)我們?cè)?XML 中配置的 navGraph 對(duì)應(yīng)的 navigation 跟節(jié)點(diǎn)文件中的 startDestination 就是通過(guò) NavGraphNavigator 來(lái)實(shí)現(xiàn)跳轉(zhuǎn)的。這也是它目前唯一的用途。
各個(gè) Navigator 通過(guò)復(fù)寫(xiě) navigate 方法來(lái)實(shí)現(xiàn)各自的跳轉(zhuǎn)邏輯。這里重點(diǎn)強(qiáng)調(diào)下 FragmentNavigator 的實(shí)現(xiàn)邏輯: public NavDestination navigate(@NonNull Destination destination, @Nullable Bundle args, @Nullable NavOptions navOptions, @Nullable Navigator.Extras navigatorExtras) { .... final Fragment frag = instantiateFragment(mContext, mFragmentManager, className, args); frag.setArguments(args); final FragmentTransaction ft = mFragmentManager.beginTransaction(); .... ft.replace(mContainerId, frag); //1 .... }
最關(guān)鍵的一行代碼就是注釋 1 處。他是通過(guò) replace 來(lái)加載 Fragment 的 ,這不符合我們實(shí)際的開(kāi)發(fā)邏輯。文章后續(xù)會(huì)講解如何自定義 FragmentNavigator 來(lái)避免 Fragment 在切換的時(shí)候 生命周期的執(zhí)行。
回到上文中的 navController 獲取的 NavigatorProvider 其內(nèi)部是維護(hù)了一個(gè) HashMap 來(lái)存儲(chǔ)相關(guān)的 Navigator 信息。通過(guò)獲取到 Navigator 的注解 Name 為 key 和 Navigator 的 getClass 為 value 進(jìn)行存儲(chǔ)。
我們?cè)诨氐缴衔闹械?onCreate 方法: @CallSuper @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Context context = requireContext(); .... if (mGraphId != 0) { mNavController.setGraph(mGraphId); } else { .... if (graphId != 0) { mNavController.setGraph(graphId, startDestinationArgs); } } }
這里通過(guò) mNavController 調(diào)用了 setGraph 。這里主要是為了解析我們的 XML 中配置的 mobile_navigation 節(jié)點(diǎn)信息文件。會(huì)根據(jù)不同的節(jié)點(diǎn)來(lái)各自解析。 @NonNull private NavDestination inflate(@NonNull Resources res, @NonNull XmlResourceParser parser, @NonNull AttributeSet attrs, int graphResId) throws XmlPullParserException, IOException { Navigator navigator = mNavigatorProvider.getNavigator(parser.getName()); final NavDestination dest = navigator.createDestination(); dest.onInflate(mContext, attrs); .... final String name = parser.getName(); if (TAG_ARGUMENT.equals(name)) { // argument 節(jié)點(diǎn) inflateArgumentForDestination(res, dest, attrs, graphResId); } else if (TAG_DEEP_LINK.equals(name)) { // deeplink 節(jié)點(diǎn) inflateDeepLink(res, dest, attrs); } else if (TAG_ACTION.equals(name)) { // action 節(jié)點(diǎn) inflateAction(res, dest, attrs, parser, graphResId); } else if (TAG_INCLUDE.equals(name) && dest instanceof NavGraph) { // include 節(jié)點(diǎn) final TypedArray a = res.obtainAttributes(attrs, R.styleable.NavInclude); final int id = a.getResourceId(R.styleable.NavInclude_graph, 0); ((NavGraph) dest).addDestination(inflate(id)); a.recycle(); } else if (dest instanceof NavGraph) { // NavGraph 節(jié)點(diǎn) ((NavGraph) dest).addDestination(inflate(res, parser, attrs, graphResId)); } } return dest; }
通過(guò)獲取 NavInflater 來(lái)對(duì)其進(jìn)行解析。解析后返回 NavGraph,NavGraph 是繼承自 NavDestination 的。里面主要是保存了所有解析出來(lái)的節(jié)點(diǎn)信息。
最后簡(jiǎn)單的總結(jié)下就是通過(guò) NavHostFragment 獲取到 NavContorl 并存儲(chǔ)了相關(guān)的 Navigator 信息。通過(guò)各自的 navigate 方法進(jìn)行頁(yè)面的跳轉(zhuǎn)。通過(guò) setGraph 來(lái)解析配置的頁(yè)面節(jié)點(diǎn)信息,并封裝為 NavGraph 對(duì)象。里面通過(guò) SparseArray 來(lái)存儲(chǔ) Destination 信息。
自定義 FragmentNavigator
上文中我們說(shuō)了需要自定義自己的 Navigator 用于承載 Fragment 。主要的實(shí)現(xiàn)思路就是繼承現(xiàn)有的 FragmentNavigator 并復(fù)寫(xiě)其 navigate 方法,將其中的 replace 方法 替換為 show 和 hide 方法 來(lái)完成 Fragment 的切換。
那么我們自定義的 Navigator 如何才能讓系統(tǒng)識(shí)別呢? 這也簡(jiǎn)單,只要給我們的 類(lèi)加上注解 @ Navigator .Name(value) 那么他就是一個(gè) Navigator 了。最后通過(guò)上文中分析的思路 在將其加入到 NavigatorProvider 中 即可。
具體的自定義 Navigator 已經(jīng)在項(xiàng)目 Android Jetpack 架構(gòu)開(kāi)發(fā)組件化應(yīng)用實(shí)戰(zhàn) 中了,類(lèi)名:FixFragmentNavigator 。大家可以自行去看下。這里就將核心的代碼貼出來(lái)看下: @Navigator.Name("fixFragment") //新的 Navigator 名稱(chēng) class FixFragmentNavigator(context: Context, manager: FragmentManager, containerId: Int) : FragmentNavigator(context, manager, containerId) { override fun navigate( destination: Destination, args: Bundle?, navOptions: NavOptions?, navigatorExtras: Navigator.Extras? ): NavDestination? { .... //ft.replace(mContainerId, frag) /** * 1 、先查詢(xún)當(dāng)前顯示的 fragment 不為空則將其 hide * 2 、根據(jù) tag 查詢(xún)當(dāng)前添加的 fragment 是否不為 null,不為 null 則將其直接 show * 3 、為 null 則通過(guò) instantiateFragment 方法創(chuàng)建 fragment 實(shí)例 * 4 、將創(chuàng)建的實(shí)例添加在事務(wù)中 */ val fragment = mManager.primaryNavigationFragment //當(dāng)前顯示的 fragment if (fragment != null) { ft.hide(fragment) } var frag: Fragment? val tag = destination.id.toString() frag = mManager.findFragmentByTag(tag) if (frag != null) { ft.show(frag) } else { frag = instantiateFragment(mContext, mManager, className, args) frag.arguments = args ft.add(mContainerId, frag, tag) } .... } }
自定義完成好,還需要將 mobile_navigation 的節(jié)點(diǎn)中遠(yuǎn) fragment 替換為 fixFragment 節(jié)點(diǎn)。并刪除布局文件中 NavHostFragment 節(jié)點(diǎn)的 app:navGraph="@navigation/mobile_navigation"
信息,因?yàn)槲覀冃枰謩?dòng)將 FixFragmentNavigator 和 NavControl 進(jìn)行關(guān)聯(lián)。 //添加自定義的 FixFragmentNavigator navController = Navigation.findNavController(this, R.id.nav_host_fragment) val fragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment val fragmentNavigator = FixFragmentNavigator(this, supportFragmentManager, fragment!!.id) navController.navigatorProvider.addNavigator(fragmentNavigator) navController.setGraph(R.navigation.mobile_navigation)
這樣就完成了自定義 Navigator 實(shí)現(xiàn)切換 Tab 的時(shí)候 Fragment 生命周期不會(huì)重新執(zhí)行了。
具體代碼邏輯詳見(jiàn): Android Jetpack 架構(gòu)開(kāi)發(fā)組件化應(yīng)用實(shí)戰(zhàn)
前沿探索
2020-08-18 03:02:37
榮耀平板 v6,感覺(jué)不錯(cuò),6+64G,支持?jǐn)U展卡,2099 到手,不知 64G,對(duì)于 android 平板夠不夠用?
前沿探索
2020-08-18 03:02:34
https://developer.android.com/android11
前沿探索
2020-08-18 03:02:31