在做Android開發(fā)過程中住诸,兼容問題一直都是安卓攻城獅們的常見的一個(gè)問題驾胆,各種手機(jī)品牌的兼容涣澡。還有API版本高低的兼容。
這里主要針對(duì)Android相機(jī)開發(fā)的兼容問題之 Fail to connect camera service錯(cuò)誤丧诺;剛遇到這個(gè)問題的時(shí)候入桂,在網(wǎng)上看了好多資料,大部分都是說的這四種元(都是容易忽略的東西):
1驳阎、手機(jī)上有安裝安全過濾軟件抗愁,因?yàn)镃amera屬于較為敏感權(quán)限,所有有些手機(jī)安全軟件會(huì)自動(dòng)拒絕Camera的打開操作呵晚,就會(huì)出現(xiàn)connect fail 錯(cuò)誤蜘腌。
解決辦法:在手機(jī)安全軟件中,降低Camera的安全級(jí)別饵隙,或者把自己的APP添加到白名單中逢捺。
個(gè)人評(píng)價(jià):對(duì)于用戶還可以實(shí)施。對(duì)于安卓攻城獅來說~然而并沒有什么卵用癞季。
2、AndroidManifest.xml文件里面沒有添加Camera的權(quán)限倘潜。沒啥可說的绷柒,添加上就可以了:
<uses-permission android:name="android.permission.CAMERA">
3、之前打開過camera涮因,沒有釋放废睦。釋放掉:
camera.stopPreview(); ?
?camera.release();
camera = null;
4、內(nèi)容占用過多养泡,可能導(dǎo)致了自己應(yīng)用可分配的內(nèi)存不足嗜湃。這種場(chǎng)景一般是因?yàn)槟銓?duì)攝像頭取得的每一幀數(shù)據(jù)都進(jìn)行了額外的處理,隨著處理的次數(shù)越來越多澜掩,如果沒有及時(shí)銷毀掉前面的對(duì)象购披,就會(huì)出現(xiàn)這個(gè)錯(cuò)誤。
解決辦法:把之前的對(duì)象釋放掉肩榕。
我遇到的問題刚陡,這四個(gè)辦法都沒有解決;問題屬于第二種情況株汉,但是我的AndroidManifest.xml文件里面添加了權(quán)限的申請(qǐng)筐乳,這是為什么呢?因?yàn)椋?/p>
針對(duì)android 6.0(API 23)及以前的版本乔妈,在AndroidManifest.xml文件里面添加權(quán)限就可以用了蝙云,但是對(duì)于Android 6.0以后的版本,系統(tǒng)允許用戶單獨(dú)管理應(yīng)用的某個(gè)權(quán)限路召,打開或者關(guān)閉勃刨。我遇到的問題就是這個(gè)API版本兼容的問題波材。
解決辦法:在進(jìn)行相機(jī)操作之前,檢測(cè)相機(jī)權(quán)限朵你,
if(ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
//申請(qǐng)WRITE_EXTERNAL_STORAGE權(quán)限
ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.CAMERA},1);}
if里面是檢測(cè)是否用Camera權(quán)限各聘,如果沒有則去申請(qǐng)。彈出對(duì)話框抡医,用戶來確認(rèn)打開與否躲因。