最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android開(kāi)發(fā)懸浮窗踩坑解決

 更新時(shí)間:2023年03月17日 08:42:37   作者:新小夢(mèng)  
這篇文章主要為大家介紹了Android懸浮窗踩坑解決示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

最近在做一個(gè)全局懸浮窗的基于ChatGPT應(yīng)用快Ai,需要懸浮于其他應(yīng)用上面,方便從懸浮窗ChatGPT返回的內(nèi)容可以拖拽到其他應(yīng)用內(nèi)部。自身應(yīng)用透明,通過(guò)WindowManger添加懸浮窗。類(lèi)似現(xiàn)在很多應(yīng)用跳轉(zhuǎn)到其他應(yīng)用,會(huì)懸浮一個(gè)小按鈕,方便用戶點(diǎn)擊調(diào)回自身一樣。只不過(guò)快Ai窗口比較大,但不全屏。

碰到以下幾個(gè)問(wèn)題:

1、懸浮窗中EditText無(wú)法獲得彈出鍵盤(pán)

主要是沒(méi)有明白下面兩個(gè)屬性的作用,在網(wǎng)上搜索之后直接設(shè)置了。

WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE

設(shè)置FLAG_NOT_FOCUSABLE,懸浮窗外的點(diǎn)擊才有效,會(huì)把事件分發(fā)給懸浮窗底層的其他應(yīng)用Activity。如果設(shè)置了FLAG_NOT_FOCUSABLE,那么屏幕上彈窗之外的地方能夠點(diǎn)擊、但是彈窗上的EditText鍵盤(pán)也不會(huì)彈出來(lái)。

此時(shí)懸浮窗外的事件是不會(huì)觸發(fā)懸浮窗內(nèi)ViewonToucheEvent函數(shù),可以通過(guò)添加WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH標(biāo)志位,但無(wú)法攔截事件。

WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

屏幕上彈窗之外的地方能夠點(diǎn)擊、彈窗上的EditText也可以輸入、鍵盤(pán)能夠彈出來(lái)。

所以根據(jù)業(yè)務(wù)需要,我只需要添加WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL標(biāo)志位即可。

2、懸浮窗無(wú)法錄音

通過(guò)Activity調(diào)起Service,然后在Service通過(guò)WindowManager進(jìn)行添加懸浮窗。在進(jìn)行沒(méi)有任何操作,可以正常調(diào)起科大訊飛進(jìn)行錄音。

問(wèn)題點(diǎn)一:同事為了解決我還沒(méi)來(lái)得及修復(fù)的windowManger.removeView改成exitProcess問(wèn)題,強(qiáng)行各種修改,最終還調(diào)用了activityfinish函數(shù),把activity干掉。最終導(dǎo)致無(wú)法調(diào)起科大訊飛的語(yǔ)音識(shí)別??偸菆?bào)錄音權(quán)限問(wèn)題,找不到任何的問(wèn)題點(diǎn),最后代碼回退,定位到Activity被干掉,同事也承認(rèn)他的愚蠢行為。

問(wèn)題點(diǎn)二:在進(jìn)行一些操作,例如授權(quán)跳轉(zhuǎn)到設(shè)置之后,退出設(shè)置回到原先界面,調(diào)不錄音,還是權(quán)限。定位答應(yīng)透明Activity的生命周期,發(fā)現(xiàn)onResume函數(shù)沒(méi)有被調(diào)用到,所以應(yīng)用現(xiàn)在在后臺(tái)運(yùn)行。

所以就一頓頓頓搜索,官方文檔: Android 9 對(duì)后臺(tái)運(yùn)行的應(yīng)用增加了權(quán)限限制。

解決方法:

  • 聲明為系統(tǒng)應(yīng)用,沒(méi)問(wèn)題。但我們想做通用軟件。
  • 增加前臺(tái)服務(wù)。實(shí)測(cè)沒(méi)效果。
  • 在2的基礎(chǔ)上,再添加一個(gè)屬性:android:foregroundServiceType="microphone"。完美。
<service android:name=".ui.service.AiService"
    android:foregroundServiceType="microphone"
    />

希望本文對(duì)君有用!

以上就是Android開(kāi)發(fā)懸浮窗踩坑解決的詳細(xì)內(nèi)容,更多關(guān)于Android懸浮窗的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

双柏县| 沅江市| 济宁市| 仁寿县| 潢川县| 蓬莱市| 宣武区| 广水市| 旅游| 康定县| 抚远县| 墨脱县| 革吉县| 元谋县| 怀柔区| 平邑县| 靖边县| 敦化市| 蒙山县| 温宿县| 梧州市| 昌吉市| 华容县| 白银市| 苏尼特左旗| 耒阳市| 和静县| 四子王旗| 岑溪市| 左贡县| 井陉县| 宜兴市| 沂水县| 丰顺县| 呈贡县| 台北县| 白山市| 兴安县| 三穗县| 合江县| 观塘区|