【移動應(yīng)用開發(fā)技術(shù)】Android中如何在安卓上開發(fā)一個微笑抓拍神器_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Android中如何在安卓上開發(fā)一個微笑抓拍神器_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Android中如何在安卓上開發(fā)一個微笑抓拍神器_第3頁
【移動應(yīng)用開發(fā)技術(shù)】Android中如何在安卓上開發(fā)一個微笑抓拍神器_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】Android中如何在安卓上開發(fā)一個微笑抓拍神器

1、開發(fā)準備1.1在項目級gradle里添加華為maven倉buildscript

{

repositories

{

maven

{url

'/repo/'}

}

}allprojects

{

repositories

{

maven

{

url

'/repo/'}

}}1.2在應(yīng)用級的build.gradle里面加上SDK依賴dependencies{

//

引入基礎(chǔ)SDK

implementation

'com.huawei.hms:ml-computer-vision:00'

//

引入人臉檢測能力包

implementation

'com.huawei.hms:ml-computer-vision-face-recognition-model:00'

}1.3在AndroidManifest.xml文件里面增量添加模型自動下載<manifest

<application

<meta-data

android:name="com.huawei.hms.ml.DEPENDENCY"

android:value=

"face"/>

</application></manifest>1.4在AndroidManifest.xml文件里面申請相機和存儲權(quán)限<!--相機權(quán)限--><uses-permission

android:name="android.permission.CAMERA"

/><!--使用存儲權(quán)限--><uses-permission

android:name="android.permission.WRITE_EXTERNAL_STORAGE"

/>2、代碼開發(fā)2.1創(chuàng)建人臉分析器,檢測到微笑后進行拍照private

MLFaceAnalyzer

analyzer;private

void

createFaceAnalyzer()

{

MLFaceAnalyzerSetting

setting

=

new

MLFaceAnalyzerSetting.Factory()

.setFeatureType(MLFaceAnalyzerSetting.TYPE_FEATURES)

.setKeyPointType(MLFaceAnalyzerSetting.TYPE_UNSUPPORT_KEYPOINTS)

.setMinFaceProportion(0.1f)

.setTracingAllowed(true)

.create();

this.analyzer

=

MLAnalyzerFactory.getInstance().getFaceAnalyzer(setting);

this.analyzer.setTransactor(new

MLAnalyzer.MLTransactor<MLFace>()

{

@Override

public

void

destroy()

{

}

@Override

public

void

transactResult(MLAnalyzer.Result<MLFace>

result)

{

SparseArray<MLFace>

faceSparseArray

=

result.getAnalyseList();

int

flag

=

0;

for

(int

i

=

0;

i

<

faceSparseArray.size();

i++)

{

MLFaceEmotion

emotion

=

faceSparseArray.valueAt(i).getEmotions();

if

(emotion.getSmilingProbability()

>

smilingPossibility)

{

flag++;

}

}

if

(flag

>

faceSparseArray.size()

*

smilingRate

&&

safeToTakePicture)

{

safeToTakePicture

=

false;

mHandler.sendEmptyMessage(TAKE_PHOTO);

}

}

});}private

void

takePhoto()

{

this.mLensEngine.photograph(null,

new

LensEngine.PhotographListener()

{

@Override

public

void

takenPhotograph(byte[]

bytes)

{

mHandler.sendEmptyMessage(STOP_PREVIEW);

Bitmap

bitmap

=

BitmapFactory.decodeByteArray(bytes,

0,

bytes.length);

saveBitmapToDisk(bitmap);

}

});}2.2創(chuàng)建視覺引擎,捕捉相機動態(tài)視頻流后傳給分析器private

void

createLensEngine()

{

Context

context

=

this.getApplicationContext();

//

Create

LensEngine

this.mLensEngine

=

new

LensEngine.Creator(context,

this.analyzer).setLensType(this.lensType)

.applyDisplayDimension(640,

480)

.applyFps(25.0f)

.enableAutomaticFocus(true)

.create();}2.3動態(tài)權(quán)限申請,掛接分析器和視覺引擎創(chuàng)建代碼@Overridepublic

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

this.setContentView(R.layout.activity_live_face_analyse);

if

(savedInstanceState

!=

null)

{

this.lensType

=

savedInstanceState.getInt("lensType");

}

this.mPreview

=

this.findViewById(R.id.preview);

this.createFaceAnalyzer();

this.findViewById(R.id.facingSwitch).setOnClickListener(this);

//

Checking

Camera

Permissions

if

(ActivityCompat.checkSelfPermission(this,

Manifest.permission.CAMERA)

==

PackageManager.PERMISSION_GRANTED)

{

this.createLensEngine();

}

else

{

this.requestCameraPermission();

}}

private

void

requestCameraPermission()

{

final

String[]

permissions

=

new

String[]{Manifest.permission.CAMERA,

Manifest.permission.WRITE_EXTERNAL_STORAGE};

if

(!ActivityCompat.shouldShowRequestPermissionRationale(this,

Manifest.permission.CAMERA))

{

ActivityCompat.requestPermissions(this,

permissions,

LiveFaceAnalyseActivity.CAMERA_PERMISSION_CODE);

return;

}}@Overridepublic

void

onRequestPermissionsResult(int

requestCode,

@NonNull

String[]

permissions,

@NonNull

int[]

grantResults)

{

if

(requestCode

!=

LiveFaceAnalyseActivity.CAMERA_PERMISSION_CODE)

{

super.onReq

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論