Commit 9a728f77 by sikang

version level up

parent 8e1fdae6
import java.lang.reflect.Type
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
// These docs use an open ended version so that our plugin
// can be updated quickly in response to Android tooling updates
// We recommend changing it to the latest version from our changelog:
// https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.library'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
android {
signingConfigs {
testsign {
keyAlias 'testsign'
keyPassword 'testsign'
storeFile file('testsign.jks')
storePassword 'testsign'
}
}
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 3
versionName "1.10.e"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
versionName "1.10.m"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
repositories {
flatDir {
dirs 'libs'
signingConfig signingConfigs.testsign
}
}
}
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
......@@ -34,10 +63,7 @@ dependencies {
api(name: 'liblivenessdetector2-release', ext: 'aar')
api(name: 'liblivenessdetectionview2-release', ext: 'aar')
api(name: 'libcommon-release', ext: 'aar')
api("com.android.support:appcompat-v7:$rootProject.ext.supportLibraryVersion", {
exclude module: 'support-v4'
})
api("com.android.support:percent:$rootProject.ext.supportLibraryVersion", {
exclude module: 'support-v4'
})
api "com.android.support:appcompat-v7:$rootProject.ext.supportLibraryVersion"
api 'com.google.android.gms:play-services-appindexing:8.4.0'
api "com.android.support:percent:$rootProject.ext.supportLibraryVersion"
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.oliveapp.liveness.sample">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="22" />
<!--<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />-->
<!--<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--<uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<!--<uses-permission android:name="android.permission.VIBRATE" />-->
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application>
<activity android:name=".SampleLaunchActivity"
android:screenOrientation="portrait">
<!--<intent-filter>-->
<!--<action android:name="android.intent.action.MAIN" />-->
<!--<category android:name="android.intent.category.LAUNCHER" />-->
<!--</intent-filter>-->
</activity>
<activity android:name=".register.SampleImageCaptureActivity"
android:screenOrientation="portrait"/>
<activity android:name=".SettingActivity"
android:screenOrientation="portrait"/>
<activity android:name=".register.SampleChooseCameraActivity"
android:screenOrientation="portrait"/>
<activity android:name=".register.SampleCameraResultActivity"
android:screenOrientation="portrait"/>
<activity
android:name="SampleStartActivity"
android:label="@string/oliveapp_app_name"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity android:name=".liveness.SampleLivenessActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity
android:name="SampleUnusualResultActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity
android:name=".idcard_captor.SampleIdcardCaptorActivity"
android:screenOrientation="portrait" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"
tools:node="remove" />
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE"
tools:node="remove" />
<uses-permission
android:name="android.permission.VIBRATE"
tools:node="remove" />
<uses-permission
android:name="android.permission.RECORD_AUDIO"
tools:node="remove" />
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:node="remove" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
tools:node="remove" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"
tools:node="remove" />
<application>
<activity
android:name=".idcard_captor.SampleIdcardResult"
android:screenOrientation="portrait" />
<activity android:name="SampleSaaSResultActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize"/>
<meta-data
android:name="io.fabric.ApiKey"
android:value="a5743d4d09caed055bc5d622e1bfe69a509d1add" />
</application>
</manifest>
\ No newline at end of file
package com.oliveapp.liveness.sample;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.oliveapp.libcommon.utility.LogUtil;
import com.oliveapp.liveness.sample.register.SampleChooseCameraActivity;
public class SampleLaunchActivity extends Activity {
public static final String TAG = SampleLaunchActivity.class.getSimpleName();
private Button mCameraButton;
private Button mLivenessButton;
private Button mSettingButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
// 如果有设置全局包名的需要, 在这里进行设置
// PackageNameManager.setPackageName();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_launch);
mCameraButton = (Button) findViewById(R.id.startButton);
mLivenessButton = (Button) findViewById(R.id.livenessButton);
mSettingButton = (Button) findViewById(R.id.settingButton);
mCameraButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(myself(), SampleChooseCameraActivity.class);
startActivity(i);
}
});
mLivenessButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(myself(), SampleStartActivity.class);
startActivity(i);
}
});
mSettingButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(myself(), SettingActivity.class);
startActivity(i);
}
});
requestPermission();
}
private Activity myself() {
return this;
}
//========================================================请求权限===================================================//
private static final int PERMISSION_READ_EXTERNAL_STORAGE = 101;
private static final int PERMISSION_WRITE_EXTERNAL_STORAGE = 102;
private static final int PERMISSION_CAMERA = 103;
private boolean requestPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_WRITE_EXTERNAL_STORAGE);
return false;
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_READ_EXTERNAL_STORAGE);
return false;
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, PERMISSION_CAMERA);
return false;
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
try {
switch (requestCode) {
case PERMISSION_CAMERA: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
Toast.makeText(this, "没有摄像头权限我什么都做不了哦!", Toast.LENGTH_LONG).show();
}
break;
}
case PERMISSION_READ_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
Toast.makeText(this, "请打开存储读写权限,确保APP正常运行", Toast.LENGTH_LONG).show();
}
break;
}
case PERMISSION_WRITE_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
Toast.makeText(this, "请打开存储读写权限,确保APP正常运行", Toast.LENGTH_LONG).show();
}
break;
}
}
} catch (Exception e) {
LogUtil.e(TAG, "Failed to request Permission", e);
}
}
}
package com.oliveapp.liveness.sample;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import com.oliveapp.libcommon.utility.LogUtil;
import com.oliveapp.liveness.sample.R;
import com.oliveapp.liveness.sample.liveness.SampleLivenessActivity;
import com.oliveapp.liveness.sample.utils.SampleScreenDisplayHelper;
import java.util.HashMap;
import java.util.Map;
public class SampleUnusualResultActivity extends Activity implements View.OnClickListener {
public static final int PARSE_INTENT_FAIL = -1;
public static final int OPERATION_EXCEPTION = 0;
public static final int NETWORK_EXCEPTION = 1;
public static final int TIME_OUT = 2;
public static final int INIT_FAIL = 3;
public static final int PRESTART_FAIL = 4;
public static final int LIVENESS_FAIL = 5;
private final String OPERATION_EXCEPTION_DATA = "操作异常";
private final String NETWORK_EXCEPTION_DATA = "网络异常,请返回重试";
private final String TIME_OUT_DATA = "超时,请返回重试";
private final String INIT_FAIL_DATA = "初始化失败,请检查权限设置和摄像头";
private final String PRESTART_FAIL_DATA = "预检失败, 请检查设置或重试";
private final String LIVENESS_FAIL_DATA = "活检失败,请重试";
private final String PARSE_INTENT_FAIL_DATA = "解析传来的intent失败,请检查";
private Map<Integer, String> mExceptionData;
public static final String keyToGetExtra = "REASON";
public static final String TAG = SampleUnusualResultActivity.class.getSimpleName();
private TextView mOliveappResultTextView;
private Button mOliveappResultReturnBtn;
private Button mOliveappResultRetryBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LogUtil.e(TAG, "[JUMP] enter unusualActivity");
//设置全屏
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//决定显示哪个页面
setContentView(decideWhichLayout());
init();
//反馈信息
int code = getIntent().getIntExtra(keyToGetExtra, PARSE_INTENT_FAIL);
mOliveappResultTextView.setText(mExceptionData.get(code));
}
//===============================初始化数据=================================//
public void init() {
mExceptionData = new HashMap<>();
mExceptionData.put(PARSE_INTENT_FAIL, PARSE_INTENT_FAIL_DATA);
mExceptionData.put(OPERATION_EXCEPTION, OPERATION_EXCEPTION_DATA);
mExceptionData.put(NETWORK_EXCEPTION, NETWORK_EXCEPTION_DATA);
mExceptionData.put(TIME_OUT, TIME_OUT_DATA);
mExceptionData.put(INIT_FAIL, INIT_FAIL_DATA);
mExceptionData.put(PRESTART_FAIL, PRESTART_FAIL_DATA);
mExceptionData.put(LIVENESS_FAIL, LIVENESS_FAIL_DATA);
mOliveappResultTextView = (TextView) findViewById(R.id.oliveappResultTextView);
mOliveappResultReturnBtn = (Button) findViewById(R.id.oliveapp_liveness_result_return);
mOliveappResultRetryBtn = (Button) findViewById(R.id.oliveapp_liveness_result_retry);
mOliveappResultRetryBtn.setOnClickListener(this);
mOliveappResultReturnBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
/**
* 这里如果点击重试按钮,则不用做任何事情,只要finish掉就好了
*/
if (R.id.oliveapp_liveness_result_return == view.getId()) {
Intent intent = new Intent(SampleUnusualResultActivity.this, SampleLaunchActivity.class);
startActivity(intent);
}
finish();
}
//==================================选择布局=====================================//
private int decideWhichLayout() {
int layout = R.layout.oliveapp_sample_result_unusual_portrait_phone;
//选择布局文件
switch (SampleScreenDisplayHelper.getFixedOrientation(this)) {
case PORTRAIT:
if (SampleScreenDisplayHelper.ifThisIsPhone(this)) {
layout = R.layout.oliveapp_sample_result_unusual_portrait_phone;
} else {
layout = R.layout.oliveapp_sample_result_unusual_portrait_tablet;
}
break;
case LANDSCAPE:
if (!SampleScreenDisplayHelper.ifThisIsPhone(this)) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
layout = R.layout.oliveapp_sample_result_unusual_landscape;
} else {
layout = R.layout.oliveapp_sample_result_unusual_portrait_phone;
}
break;
}
return layout;
}
}
package com.oliveapp.liveness.sample.idcard_captor;
import android.content.Intent;
import android.os.Bundle;
import com.oliveapp.face.idcardcaptorsdk.captor.CapturedIDCardImage;
import com.oliveapp.liveness.sample.idcard_captor.view_controller.SampleIdcardCaptorMainActivity;
/**
* SampleIdcardCaptorActivity
* 如果不想关心界面实现细节,可以直接在此Activity中实现界面跳转逻辑
*/
public class SampleIdcardCaptorActivity extends SampleIdcardCaptorMainActivity {
@Override
public void onCreate(Bundle savedInstance) {
// 如果有设置全局包名的需要, 在这里进行设置
// PackageNameManager.setPackageName();
super.onCreate(savedInstance);
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onFrameResult(int status) {
super.onFrameResult(status);
}
/**
* 捕获到最好的一张身份证照片
*/
@Override
public void onIDCardCaptured(CapturedIDCardImage data) {
super.onIDCardCaptured(data);
// 处理Activity跳转逻辑
Intent i = new Intent(SampleIdcardCaptorActivity.this, SampleIdcardResult.class);
i.putExtra("image", data.idcardImageData);
startActivity(i);
finish();
}
}
package com.oliveapp.liveness.sample.liveness;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Base64;
import android.widget.Toast;
import com.oliveapp.face.livenessdetectorsdk.livenessdetector.datatype.LivenessDetectionFrames;
import com.oliveapp.face.livenessdetectorsdk.livenessdetector.datatype.OliveappFaceInfo;
import com.oliveapp.libcommon.utility.LogUtil;
import com.oliveapp.liveness.sample.SampleUnusualResultActivity;
import com.oliveapp.liveness.sample.liveness.view_controller.LivenessDetectionMainActivity;
/**
* 样例活体检测Activity
*/
public class SampleLivenessActivity extends LivenessDetectionMainActivity {
public static final String TAG = SampleLivenessActivity.class.getSimpleName();
private ProgressDialog mProgressDialog;
public static String resultString = null;
private LivenessDetectionFrames livenessDetectionFrames;
@Override
protected void onCreate(Bundle savedInstanceState) {
// 如果有设置全局包名的需要, 在这里进行设置
// PackageNameManager.setPackageName();
super.onCreate(savedInstanceState);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
/**
* =====================启动算法===============
**/
@Override
public void onInitializeSucc() {
super.onInitializeSucc();
super.startVerification();
}
@Override
public void onInitializeFail(Throwable e) {
super.onInitializeFail(e);
LogUtil.e(TAG, "无法初始化活体检测...", e);
Toast.makeText(this, "无法初始化活体检测", Toast.LENGTH_LONG).show();
Intent i = new Intent(SampleLivenessActivity.this, SampleUnusualResultActivity.class);
i.putExtra(SampleUnusualResultActivity.keyToGetExtra, SampleUnusualResultActivity.INIT_FAIL);
startActivity(i);
finish();
}
@Override
protected void onPause() {
super.onPause();
if ((mProgressDialog != null) && mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
mProgressDialog = null;
}
}
/**===================================活体检测算法的回调==================================**/
/**
* 活体检测成功的回调,同时获取大礼包
* 成功回调的接口在1.7.a_hotfix被拆成了2步,不再使用该接口
*
* @param livenessDetectionFrames 活体检测抓取的图片
* @param faceInfo 捕获到的人脸信息
*/
@Override
public void onLivenessSuccess(final LivenessDetectionFrames livenessDetectionFrames, OliveappFaceInfo faceInfo) {
super.onLivenessSuccess(livenessDetectionFrames, faceInfo);
this.livenessDetectionFrames = livenessDetectionFrames;
CheckImagePackage checkImagePackage = new CheckImagePackage();
checkImagePackage.execute();
}
/*@Override
public void onLivenessSuccess(OliveappFaceInfo oliveappFaceInfo) {
super.onLivenessSuccess(null, oliveappFaceInfo);
CheckImagePackage checkImagePackage = new CheckImagePackage();
checkImagePackage.execute();
}*/
/**
* 活检阶段失败
*/
@Override
public void onLivenessFail(int result, LivenessDetectionFrames livenessDetectionFrames) {
super.onLivenessFail(result, livenessDetectionFrames);
runOnUiThread(new Runnable() {
@Override
public void run() {
// Intent intent = new Intent();
// Bundle bundle = new Bundle();
// bundle.putString("FACE_RESULT", null);
// intent.putExtras(bundle);
setResult(Activity.RESULT_OK);
finish();
}
});
}
/**
* 获取大礼包并访问私有云的样例代码,集成时请不要使用
*/
private class CheckImagePackage extends AsyncTask<Void, Void, String> {
@Override
protected void onPreExecute() {
mProgressDialog = ProgressDialog.show(SampleLivenessActivity.this,
null, "正在比对,请稍等", true, false);
}
@Override
protected String doInBackground(Void... voids) {
// 获取大礼包,耗时操作,不可在UI线程执行
return Base64.encodeToString(livenessDetectionFrames.verificationData, Base64.NO_WRAP);
}
@Override
protected void onPostExecute(final String result) {
if (mProgressDialog != null) {
mProgressDialog.dismiss();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
// Intent intent = new Intent();
// Bundle bundle = new Bundle();
// bundle.putString("FACE_RESULT", result);
// intent.putExtras(bundle);
resultString = result;
setResult(Activity.RESULT_OK);
finish();
}
});
}
}
public static class YituFaceResult{
public String resultString;
public YituFaceResult(String result){
resultString = result;
}
}
}
package com.oliveapp.liveness.sample.register;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import com.oliveapp.liveness.sample.R;
public class SampleCameraResultActivity extends Activity{
public static final String TAG = SampleCameraResultActivity.class.getSimpleName();
public static final String EXTRA_IMAGE_CONTENT = "image_content";
public static final String EXTRA_FACE_EXISTS = "face_exists";
public static final String EXTRA_FACE_RECT = "face_rect";
private ImageView mImageView;
private Button mRetakeButton;
private Button mBackButton;
public static final int livenessMode = 4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_register_result);
mImageView = (ImageView) findViewById(R.id.captureImageImageView);
mRetakeButton = (Button) findViewById(R.id.retakeButton);
mBackButton = (Button) findViewById(R.id.confirmButton);
Bundle result = getIntent().getExtras();
final int mode = result.getInt(SampleImageCaptureActivity.EXTRA_CAPTURE_MODE);
byte[] imageContent = result.getByteArray(EXTRA_IMAGE_CONTENT);
boolean faceExists = result.getBoolean(EXTRA_FACE_EXISTS);
Bitmap capturedImage = BitmapFactory.decodeByteArray(imageContent, 0, imageContent.length);
if (faceExists) {
Bitmap imageWithRect = capturedImage.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(imageWithRect);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
String rectString = result.getString(EXTRA_FACE_RECT);
Rect rect = Rect.unflattenFromString(rectString);
canvas.drawRect(rect, paint);
mImageView.setImageBitmap(imageWithRect);
} else {
mImageView.setImageBitmap(capturedImage);
}
//
if (livenessMode == mode) {
mRetakeButton.setVisibility(View.INVISIBLE);
}
mRetakeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(SampleCameraResultActivity.this, SampleImageCaptureActivity.class);
i.putExtra(SampleImageCaptureActivity.EXTRA_CAPTURE_MODE, mode);
startActivity(i);
finish();
}
});
mBackButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
package com.oliveapp.liveness.sample.register;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.oliveapp.face.idcardcaptorsdk.captor.IDCardCaptor;
import com.oliveapp.libcommon.utility.LogUtil;
import com.oliveapp.libimagecapture.CaptureImageFragment;
import com.oliveapp.liveness.sample.R;
import com.oliveapp.liveness.sample.idcard_captor.SampleIdcardCaptorActivity;
public class SampleChooseCameraActivity extends Activity {
public static final String TAG = SampleChooseCameraActivity.class.getSimpleName();
private Button mIdCardButton;
private Button mSelfieButton;
private Button mIdcardFrontCaptureButton;
private Button mIdcardBackCaptureButton;
private IdcardCaptureListener mIdcardCaptureListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_register);
mIdCardButton = (Button) findViewById(R.id.IDcard);
mSelfieButton = (Button) findViewById(R.id.Selfie);
mIdcardFrontCaptureButton = (Button) findViewById(R.id.IdcardFrontCapture);
mIdcardBackCaptureButton = (Button) findViewById(R.id.IdcardBackCapture);
/**
* 拍摄身份证正面,反面请使用CaptureImageFragment.CAPTURE_MODE_IDCARD_BACK
*/
mIdCardButton.setOnClickListener(
new CaptureImageListener(CaptureImageFragment.CAPTURE_MODE_IDCARD_FRONT));
/**
* 拍摄类登记照
*/
mSelfieButton.setOnClickListener(
new CaptureImageListener(CaptureImageFragment.CAPTURE_MODE_SELFIE));
mIdcardCaptureListener = new IdcardCaptureListener();
mIdcardFrontCaptureButton.setOnClickListener(mIdcardCaptureListener);
mIdcardBackCaptureButton.setOnClickListener(mIdcardCaptureListener);
requestPermission();
}
private class CaptureImageListener implements View.OnClickListener {
private int mCaptureType;
public CaptureImageListener(int captureMode) {
mCaptureType = captureMode;
}
@Override
public void onClick(View v) {
if (requestPermission()) {
Intent i = new Intent(SampleChooseCameraActivity.this, SampleImageCaptureActivity.class);
i.putExtra(SampleImageCaptureActivity.EXTRA_CAPTURE_MODE, mCaptureType);
startActivity(i);
}
}
}
private class IdcardCaptureListener implements View.OnClickListener {
@Override
public void onClick(View v) {
Intent i = new Intent(SampleChooseCameraActivity.this, SampleIdcardCaptorActivity.class);
/**
* 设置身份证识别正面还是反面
*/
int i1 = v.getId();
if (i1 == R.id.IdcardFrontCapture) {
i.putExtra(SampleIdcardCaptorActivity.EXTRA_CARD_TYPE, IDCardCaptor.CARD_TYPE_FRONT);
} else if (i1 == R.id.IdcardBackCapture) {
i.putExtra(SampleIdcardCaptorActivity.EXTRA_CARD_TYPE, IDCardCaptor.CARD_TYPE_BACK);
}
/**
* 设置捕获模式,共有三种模式模式:
* 1.SampleIdcardCaptorActivity.CAPTURE_MODE_AUTO 自动捕获模式
* 2.SampleIdcardCaptorActivity.CAPTURE_MODE_MANUAL 手动拍摄模式
* 3.SampleIdcardCaptorActivity.CAPTURE_MODE_MIXED 混合模式,首先尝试自动捕获,指定时间后,采取手动拍摄
* 在本例中,使用混合捕获模式,需要设置自动捕获持续时间,单位为秒,默认10秒
*/
i.putExtra(SampleIdcardCaptorActivity.EXTRA_CAPTURE_MODE, SampleIdcardCaptorActivity.CAPTURE_MODE_MIXED);
i.putExtra(SampleIdcardCaptorActivity.EXTRA_DURATION_TIME, 10);
if (requestPermission()) {
startActivity(i);
}
}
}
/**==============================请求相机权限=========================**/
private static final int PERMISSION_READ_EXTERNAL_STORAGE = 101;
private static final int PERMISSION_WRITE_EXTERNAL_STORAGE = 102;
private static final int PERMISSION_CAMERA = 103;
private boolean requestPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_WRITE_EXTERNAL_STORAGE);
return false;
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_READ_EXTERNAL_STORAGE);
return false;
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, PERMISSION_CAMERA);
return false;
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
try {
switch (requestCode) {
case PERMISSION_CAMERA: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
Toast.makeText(this, "没有摄像头权限我什么都做不了哦!", Toast.LENGTH_LONG).show();
}
break;
}
case PERMISSION_READ_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
Toast.makeText(this, "请打开存储读写权限,确保APP正常运行", Toast.LENGTH_LONG).show();
}
break;
}
case PERMISSION_WRITE_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
Toast.makeText(this, "请打开存储读写权限,确保APP正常运行", Toast.LENGTH_LONG).show();
}
break;
}
}
} catch (Exception e) {
LogUtil.e(TAG, "Failed to request Permission", e);
}
}
}
package com.oliveapp.liveness.sample.register;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.oliveapp.libcommon.utility.PackageNameManager;
import com.oliveapp.libimagecapture.CaptureImageFragment;
import com.oliveapp.libimagecapture.OnImageCapturedEventListener;
import com.oliveapp.libimagecapture.datatype.DetectedRect;
import com.oliveapp.liveness.sample.R;
public class SampleImageCaptureActivity extends Activity implements OnImageCapturedEventListener {
public static final String TAG = SampleImageCaptureActivity.class.getSimpleName();
public static final String EXTRA_CAPTURE_MODE = "capture_mode";
private CaptureImageFragment mCaptureImageFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
if (!PackageNameManager.isPackageNameSet()) {
PackageNameManager.setPackageName(getPackageName());
}
PackageNameManager.setPackageName(PackageNameManager.getPackageName());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_image_capture);
attachUserImageRegistractionFragment();
}
private void attachUserImageRegistractionFragment() {
FragmentManager mFragmentManager = getFragmentManager();
CaptureImageFragment userImageRegisterFragment = (CaptureImageFragment) mFragmentManager.findFragmentByTag(CaptureImageFragment.TAG);
if (userImageRegisterFragment == null) {
int captureType = getIntent().getExtras().getInt(EXTRA_CAPTURE_MODE, CaptureImageFragment.CAPTURE_MODE_IDCARD_FRONT);
userImageRegisterFragment = CaptureImageFragment.newInstance(captureType);
FragmentTransaction ft = mFragmentManager.beginTransaction();
ft.add(R.id.imageCaptureMainLayout, userImageRegisterFragment, CaptureImageFragment.TAG);
ft.commit();
} else {
if (userImageRegisterFragment.isAdded()) {
Log.i(TAG, "user image register fragment already attached");
}
}
userImageRegisterFragment.setArgs(this, this);
mCaptureImageFragment = userImageRegisterFragment;
}
@Override
public void OnImageCaptured(byte[] imageContent, DetectedRect faceRect) {
boolean faceExists = (faceRect != null);
Intent i = new Intent(this, SampleCameraResultActivity.class);
i.putExtra(EXTRA_CAPTURE_MODE, getIntent().getExtras().getInt(EXTRA_CAPTURE_MODE, CaptureImageFragment.CAPTURE_MODE_IDCARD_FRONT));
i.putExtra(SampleCameraResultActivity.EXTRA_IMAGE_CONTENT, imageContent);
i.putExtra(SampleCameraResultActivity.EXTRA_FACE_EXISTS, faceExists);
if (faceExists) {
i.putExtra(SampleCameraResultActivity.EXTRA_FACE_RECT, faceRect.rect.flattenToString());
}
startActivity(i);
finish();
}
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="#ff00427d"/>
</shape>
</item>
<item android:state_selected="true">
<shape>
<solid android:color="#ff005aaa"/>
</shape>
</item>
<item android:state_enabled="false">
<shape>
<solid android:color="#80005aaa"/>
</shape>
</item>
<item>
<shape>
<solid android:color="#ff005aaa"/>
</shape>
</item>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:useLevel="true"
android:innerRadiusRatio="2.7"
android:thickness="4dp"
android:shape="ring">
<!--<stroke android:width="1dp" android:color="#07ADD0"/>-->
<solid android:color="#02ADCF"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:useLevel="false"
android:shape="oval">
<solid android:color="#5DC6E2" />
</shape>
</item>
<item>
<shape
android:useLevel="false"
android:innerRadiusRatio="2.7"
android:thickness="4dp"
android:shape="ring">
<!--<solid android:color="#02ADCF" />-->
<solid android:color="#ffffff" />
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:useLevel="false"
android:innerRadiusRatio="2.7"
android:thickness="4dp"
android:shape="oval">
<stroke android:width="1dp" android:color="#5DC6E2"/>
<solid android:color="#FF4D4D4D"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="#ff00427d"/>
</shape>
</item>
<item android:state_selected="true">
<shape>
<solid android:color="#ff005aaa"/>
</shape>
</item>
<item android:state_enabled="false">
<shape>
<solid android:color="#80005aaa"/>
</shape>
</item>
<item>
<shape>
<solid android:color="#ff005aaa"/>
</shape>
</item>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- 橙色人脸框,仅供debug用,非产品需求 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:color="@color/navy"
android:width="2dp"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/oliveapp_liveness_return" android:state_pressed="false"/>
<item android:drawable="@mipmap/oliveapp_liveness_return" android:state_pressed="true"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/oliveapp_liveness_return" android:state_pressed="false"/>
<item android:drawable="@mipmap/oliveapp_liveness_return" android:state_pressed="true"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@mipmap/oliveapp_liveness_return"/>
<item android:state_pressed="false" android:drawable="@mipmap/oliveapp_liveness_return"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/checkbox_unchecked"
android:state_checked="false"
android:state_enabled="true"/>
<item
android:drawable="@drawable/checkbox_checked"
android:state_checked="true"
android:state_enabled="true"/>
<item
android:drawable="@drawable/checkbox_disable_unchecked"
android:state_checked="false"
android:state_enabled="false"/>
<item
android:drawable="@drawable/checkbox_disable_checked"
android:state_checked="true"
android:state_enabled="false"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:drawable="@color/itemdisabled" />
<item android:state_enabled="false" android:drawable="@color/itemdisabled" />
<item android:state_enabled="true" android:state_pressed="true" android:drawable="@color/itemSelectColor" />
<item android:state_focused="true" android:state_enabled="true" android:drawable="@color/itemSelectColor" />
<item android:state_enabled="true" android:state_selected="true" android:drawable="@color/itemSelectColor" />
<item android:drawable="@color/itemBgColor" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.oliveapp.liveness.sample.idcard_captor.SampleIdcardActivity">
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ImageCaptureActivity"
android:id="@+id/imageCaptureMainLayout">
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/oliveapp_activity_vertical_margin"
android:paddingLeft="@dimen/oliveapp_activity_horizontal_margin"
android:paddingRight="@dimen/oliveapp_activity_horizontal_margin"
android:paddingTop="@dimen/oliveapp_activity_vertical_margin"
android:background="@color/colorDefaultBackground"
tools:context=".SampleLaunchActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/titleText"
android:id="@+id/titleTextView"
android:layout_alignParentTop="true"
android:layout_marginTop="70dp"
android:layout_centerHorizontal="true"
android:textSize="40sp"
android:textColor="@color/colorWhite"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/oliveapp_version"
android:textColor="@color/colorWhite"
android:textSize="20sp" />
<!--<TextView-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:textAppearance="?android:attr/textAppearanceLarge"-->
<!--android:text="@string/subtitleText"-->
<!--android:id="@+id/subtitleTextView"-->
<!--android:layout_below="@+id/titleTextView"-->
<!--android:layout_alignLeft="@+id/titleTextView"-->
<!--android:layout_alignStart="@+id/titleTextView" />-->
<Button
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:text="@string/hintCamera"
android:id="@+id/startButton"
android:layout_centerHorizontal="true"
android:layout_below="@+id/titleTextView"
android:layout_marginTop="100dp"
android:background="@drawable/oliveapp_button_background"
android:textColor="#ffffff"
android:textSize="20sp" />
<Button
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:text="@string/livenessButtonText"
android:id="@+id/livenessButton"
android:background="@drawable/oliveapp_button_background"
android:textColor="#ffffff"
android:textSize="20sp"
android:layout_below="@+id/startButton"
android:layout_marginTop="20dp"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:text="@string/settingButtonText"
android:id="@+id/settingButton"
android:background="@drawable/oliveapp_button_background"
android:textColor="#ffffff"
android:textSize="20sp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="60dp" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/oliveapp_activity_vertical_margin"
android:paddingLeft="@dimen/oliveapp_activity_horizontal_margin"
android:paddingRight="@dimen/oliveapp_activity_horizontal_margin"
android:paddingTop="@dimen/oliveapp_activity_vertical_margin"
android:background="@color/colorDefaultBackground"
tools:context=".register.SampleChooseCameraActivity">
<LinearLayout
android:id="@+id/chooseImageTypeLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_marginTop="50dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<Button
android:id="@+id/IDcard"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginBottom="30dp"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:text="@string/hintIDcard"
android:layout_gravity="center_horizontal"
android:textSize="16sp"
android:gravity="center_horizontal|center_vertical"
android:background="@drawable/oliveapp_button_background"
android:layout_marginTop="25dp"
android:textColor="#ffffff" />
<Button
android:id="@+id/Selfie"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginBottom="30dp"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:text="@string/hintFrontCamera"
android:layout_gravity="center_horizontal"
android:textSize="16sp"
android:gravity="center_horizontal|center_vertical"
android:background="@drawable/oliveapp_button_background"
android:layout_marginTop="25dp"
android:textColor="#ffffff" />
<Button
android:id="@+id/IdcardFrontCapture"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginBottom="30dp"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:text="@string/hintIdcardCapture"
android:layout_gravity="center_horizontal"
android:textSize="16sp"
android:gravity="center_horizontal|center_vertical"
android:background="@drawable/oliveapp_button_background"
android:layout_marginTop="25dp"
android:textColor="#ffffff" />
<Button
android:id="@+id/IdcardBackCapture"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginBottom="30dp"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:text="@string/hintIdcardBackCapture"
android:layout_gravity="center_horizontal"
android:textSize="16sp"
android:gravity="center_horizontal|center_vertical"
android:background="@drawable/oliveapp_button_background"
android:layout_marginTop="25dp"
android:textColor="#ffffff" />
</LinearLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/oliveapp_activity_vertical_margin"
android:paddingLeft="@dimen/oliveapp_activity_horizontal_margin"
android:paddingRight="@dimen/oliveapp_activity_horizontal_margin"
android:paddingTop="@dimen/oliveapp_activity_vertical_margin"
android:background="@color/colorDefaultBackground"
tools:context=".register.SampleCameraResultActivity">
<ImageView
android:layout_width="300dp"
android:layout_height="300dp"
android:id="@+id/captureImageImageView"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:text="重新拍摄"
android:textColor="@color/colorWhite"
android:id="@+id/retakeButton"
android:layout_marginBottom="20dp"
android:layout_centerHorizontal="true"
android:background="@drawable/oliveapp_button_background"
android:layout_above="@+id/confirmButton" />
<Button
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:text="返回"
android:textColor="@color/colorWhite"
android:id="@+id/confirmButton"
android:background="@drawable/oliveapp_button_background"
android:layout_alignParentBottom="true"
android:layout_marginBottom="60dp"
android:layout_centerHorizontal="true" />
</RelativeLayout>
<?xml version="1.0" encoding="UTF-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@drawable/arrow"
android:clickable="false"
android:focusable="false" />
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这里放上系统的id -->
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:button="@drawable/selector_checkbox"
android:clickable="false"
android:focusable="false" />
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".idcard_captor.view_controller.SampleIdcardCaptorMainActivity">
<RelativeLayout
android:id="@+id/oliveapp_face_captureLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:visibility="visible">
<RelativeLayout
android:id="@+id/oliveapp_face_previewLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true">
<view
android:id="@+id/oliveapp_face_cameraPreviewView"
class="com.oliveapp.camerasdk.ui.CameraRootView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/oliveapp_face_captureIDCardHintLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible">
<ImageView
android:id="@+id/oliveapp_face_idcardSkeletonImageView"
android:layout_width="252dp"
android:layout_height="400dp"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/oliveapp_face_idcard_shade_skeleton_minimum3"
android:layout_centerInParent="true" />
<ImageView
android:id="@+id/oliveapp_face_scan_line"
android:layout_width="wrap_content"
android:layout_height="400dp"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/oliveapp_scan_line"/>
<ImageView
android:id="@+id/oliveapp_face_shadowLeftImageView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/oliveapp_face_idcardSkeletonImageView"
android:layout_toStartOf="@+id/oliveapp_face_idcardSkeletonImageView"
android:scaleType="fitXY"
android:src="@drawable/oliveapp_face_black_shadow" />
<ImageView
android:id="@+id/oliveapp_face_shadowRightImageView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="false"
android:layout_alignParentRight="true"
android:layout_toEndOf="@+id/oliveapp_face_idcardSkeletonImageView"
android:layout_toRightOf="@+id/oliveapp_face_idcardSkeletonImageView"
android:scaleType="fitXY"
android:src="@drawable/oliveapp_face_black_shadow" />
<ImageView
android:id="@+id/oliveapp_face_shadowTopImageView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/oliveapp_face_shadowRightImageView"
android:layout_toRightOf="@+id/oliveapp_face_shadowLeftImageView"
android:adjustViewBounds="false"
android:baselineAlignBottom="false"
android:scaleType="fitXY"
android:src="@drawable/oliveapp_face_black_shadow"
android:layout_above="@+id/oliveapp_face_idcardSkeletonImageView" />
<ImageView
android:id="@+id/oliveapp_face_shadowBottomImageView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/oliveapp_face_shadowRightImageView"
android:layout_toRightOf="@+id/oliveapp_face_shadowLeftImageView"
android:scaleType="fitXY"
android:src="@drawable/oliveapp_face_black_shadow"
android:layout_below="@+id/oliveapp_face_idcardSkeletonImageView" />
<com.oliveapp.libcommon.uicomponents.VerticalTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/oliveapp_face_hintTextView"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:text="@string/oliveapp_face_database_image_hint_front"
android:textColor="#ffffff"
android:layout_marginLeft="5dp" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/oliveapp_frame_rate_text"
android:text="FPS: "/>
</RelativeLayout>
<!--<RelativeLayout-->
<!--android:id="@+id/oliveapp_face_takePictureButtonLayout"-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="64dp"-->
<!--android:layout_alignParentBottom="true"-->
<!--android:layout_alignParentLeft="true"-->
<!--android:layout_alignParentRight="true"-->
<!--android:layout_alignParentStart="true"-->
<!--android:layout_centerHorizontal="true"-->
<!--android:background="@drawable/oliveapp_face_black_shadow">-->
<ImageButton
android:id="@+id/oliveapp_face_takePictureButton"
style="?android:attr/borderlessButtonStyle"
android:layout_height="64dp"
android:layout_width="wrap_content"
android:clickable="true"
android:src="@drawable/oliveapp_camera_alt_white_48dp"
android:scaleType="fitCenter"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:visibility="invisible"/>
<!--</RelativeLayout>-->
</RelativeLayout>
......@@ -83,7 +83,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Hadapilah layar"
android:text="@string/oliveapp_step_hint_focus"
android:textColor="#FFFF00"
android:textSize="24sp" />
......
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000">
<!--检测结果-->
<ImageView
android:id="@+id/oliveapp_liveness_result_image"
android:layout_centerHorizontal="true"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_marginTopPercent="13.5%"
app:layout_widthPercent="36%"
app:layout_aspectRatio="462%"/>
<TextView
android:id="@+id/oliveappResultTextView"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
app:layout_widthPercent="80%"
app:layout_heightPercent="20%"
app:layout_marginTopPercent="41.6%"
android:textSize="40sp"
android:textColor="#FFFFFF"/>
<Button
android:id="@+id/oliveapp_liveness_result_retry"
android:layout_alignParentBottom="true"
app:layout_marginBottomPercent="10.8%"
app:layout_marginLeftPercent="15%"
app:layout_widthPercent="31%"
app:layout_aspectRatio="300%"/>
<Button
android:id="@+id/oliveapp_liveness_result_return"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
app:layout_marginBottomPercent="10.8%"
app:layout_marginRightPercent="15%"
app:layout_widthPercent="31%"
app:layout_aspectRatio="300%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:paddingLeft="@dimen/oliveapp_activity_horizontal_margin"
android:paddingRight="@dimen/oliveapp_activity_horizontal_margin"
android:paddingTop="@dimen/oliveapp_activity_vertical_margin"
android:paddingBottom="@dimen/oliveapp_activity_vertical_margin"
tools:context="SampleUnusualResultActivity">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--检测结果-->
<ImageView
android:id="@+id/oliveapp_liveness_result_image"
android:layout_centerHorizontal="true"
app:layout_marginTopPercent="33.6%"
app:layout_widthPercent="49.1%"
app:layout_aspectRatio="462%"/>
<TextView
android:id="@+id/oliveappResultTextView"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
app:layout_widthPercent="80%"
app:layout_heightPercent="20%"
app:layout_marginTopPercent="41.6%"
android:textSize="30sp"
android:textColor="#FFFFFF"/>
<Button
android:id="@+id/oliveapp_liveness_result_retry"
android:layout_alignParentBottom="true"
android:background="@drawable/oliveapp_liveness_finish_retry"
app:layout_marginBottomPercent="8%"
app:layout_marginLeftPercent="6.1%"
app:layout_widthPercent="41.7%"
app:layout_aspectRatio="295%"/>
<Button
android:id="@+id/oliveapp_liveness_result_return"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@drawable/oliveapp_liveness_finish_return_selector"
app:layout_marginBottomPercent="8%"
app:layout_marginRightPercent="6.1%"
app:layout_widthPercent="41.7%"
app:layout_aspectRatio="295%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000">
<!--检测结果-->
<ImageView
android:id="@+id/oliveapp_liveness_result_image"
android:layout_centerHorizontal="true"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_marginTopPercent="30%"
app:layout_widthPercent="49.1%"
app:layout_aspectRatio='462%'/>
<TextView
android:id="@+id/oliveappResultTextView"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
app:layout_widthPercent="80%"
app:layout_heightPercent="20%"
app:layout_marginTopPercent="41.6%"
android:textSize="40sp"
android:textColor="#FFFFFF"/>
<Button
android:id="@+id/oliveapp_liveness_result_retry"
android:layout_alignParentBottom="true"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_marginBottomPercent="10.8%"
app:layout_marginLeftPercent="10%"
app:layout_widthPercent="35%"
app:layout_aspectRatio="328%"/>
<Button
android:id="@+id/oliveapp_liveness_result_return"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_marginBottomPercent="10.8%"
app:layout_marginRightPercent="10%"
app:layout_widthPercent="35%"
app:layout_aspectRatio="328%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000">
<!--检测结果-->
<ImageView
android:id="@+id/oliveapp_liveness_result_image"
android:layout_centerHorizontal="true"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_marginRightPercent="25.5%"
app:layout_marginTopPercent="13.5%"
app:layout_widthPercent="36%"
app:layout_aspectRatio="462%"/>
<!--将下面列表使用listview表示-->
<ListView
android:id="@+id/oliveapp_liveness_saas_list"
android:layout_alignParentLeft="true"
app:layout_widthPercent="40%"
app:layout_heightPercent="40%"
app:layout_marginTopPercent="33.8%"
app:layout_marginLeftPercent="8.3%"
android:isScrollContainer="false"
android:divider="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
<ImageView
android:layout_centerHorizontal="true"
app:layout_heightPercent="40%"
app:layout_widthPercent="2%"
app:layout_marginTopPercent="33%"
android:src="@mipmap/oliveapp_divider_tablet"/>
<android.support.percent.PercentRelativeLayout
app:layout_widthPercent="40%"
app:layout_heightPercent="40%"
app:layout_marginTopPercent="33%"
app:layout_marginRightPercent="8.2%"
android:layout_alignParentRight="true"
android:background="@mipmap/oliveapp_liveness_result_border">
<!--两张人脸-->
<!--第一张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_close"
app:layout_widthPercent="45%"
app:layout_heightPercent="90%"
app:layout_marginTopPercent="5%"
app:layout_marginLeftPercent="2.5%"/>
<ImageView
app:layout_widthPercent="40%"
app:layout_heightPercent="80%"
app:layout_marginTopPercent="10%"
app:layout_marginLeftPercent="5%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--第二张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_open"
app:layout_widthPercent="45%"
app:layout_heightPercent="90%"
app:layout_marginTopPercent="5%"
app:layout_marginRightPercent="2.5%"
android:layout_alignParentRight="true"/>
<ImageView
app:layout_widthPercent="40%"
app:layout_heightPercent="80%"
app:layout_marginTopPercent="10%"
app:layout_marginRightPercent="5%"
android:layout_alignParentRight="true"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
</android.support.percent.PercentRelativeLayout>
<Button
android:id="@+id/oliveapp_liveness_saas_result_retry"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
app:layout_marginBottomPercent="9%"
app:layout_marginRightPercent="28%"
app:layout_widthPercent="18%"
app:layout_aspectRatio="200%" />
<Button
android:id="@+id/oliveapp_liveness_saas_result_return"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
app:layout_marginBottomPercent="9%"
app:layout_marginRightPercent="8.3%"
app:layout_widthPercent="18%"
app:layout_aspectRatio="200%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_sample_saa_sresult"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.oliveapp.liveness.sample.SampleSaaSResultActivity">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--检测结果-->
<ImageView
android:id="@+id/oliveapp_liveness_result_image"
android:layout_centerHorizontal="true"
app:layout_marginRightPercent="25.5%"
app:layout_marginTopPercent="9.7%"
app:layout_widthPercent="49.1%"
app:layout_aspectRatio="462%"/>
<ImageView
app:layout_widthPercent="87.8%"
app:layout_heightPercent="24.6%"
app:layout_marginTopPercent="20.4%"
app:layout_marginRightPercent="5.1%"
android:layout_centerHorizontal="true"
android:background="@mipmap/oliveapp_liveness_result_border"/>
<!--两张人脸-->
<!--第一张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_close"
app:layout_widthPercent="35.12%"
app:layout_heightPercent="19.68%"
app:layout_marginTopPercent="22.86%"
app:layout_marginLeftPercent="10.49%"/>
<ImageView
app:layout_widthPercent="28.9%"
app:layout_heightPercent="16.3%"
app:layout_marginTopPercent="24.6%"
app:layout_marginLeftPercent="13.5%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--第二张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_open"
app:layout_widthPercent="35.12%"
app:layout_heightPercent="19.68%"
app:layout_marginTopPercent="22.86%"
app:layout_marginRightPercent="10.49%"
android:layout_alignParentRight="true"/>
<ImageView
app:layout_widthPercent="28.9%"
app:layout_heightPercent="16.3%"
app:layout_marginTopPercent="24.6%"
app:layout_marginLeftPercent="57.6%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--将下面列表使用listview表示-->
<ListView
android:id="@+id/oliveapp_liveness_saas_list"
android:layout_alignParentBottom="true"
app:layout_widthPercent="82.7%"
app:layout_heightPercent="25.4%"
app:layout_marginBottomPercent="25.3%"
app:layout_marginLeftPercent="8.6%"
android:isScrollContainer="false"
android:divider="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
<Button
android:id="@+id/oliveapp_liveness_saas_result_retry"
android:layout_alignParentBottom="true"
android:background="@drawable/oliveapp_liveness_finish_retry"
app:layout_marginBottomPercent="8%"
app:layout_marginLeftPercent="6.1%"
app:layout_widthPercent="41.7%"
app:layout_aspectRatio="295%"/>
<Button
android:id="@+id/oliveapp_liveness_saas_result_return"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@drawable/oliveapp_liveness_finish_return_selector"
app:layout_marginBottomPercent="8%"
app:layout_marginRightPercent="6.1%"
app:layout_widthPercent="41.7%"
app:layout_aspectRatio="295%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000">
<!--检测结果-->
<ImageView
android:id="@+id/oliveapp_liveness_result_image"
android:layout_centerHorizontal="true"
app:layout_marginRightPercent="25.5%"
app:layout_marginTopPercent="9.7%"
app:layout_widthPercent="49.1%"
app:layout_heightPercent="7%"/>
<ImageView
app:layout_widthPercent="87.8%"
app:layout_heightPercent="24.6%"
app:layout_marginTopPercent="20.4%"
app:layout_marginRightPercent="5.1%"
android:layout_centerHorizontal="true"
android:background="@mipmap/oliveapp_liveness_result_border"/>
<!--两张人脸-->
<!--第一张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_close"
app:layout_widthPercent="35.12%"
app:layout_heightPercent="19.68%"
app:layout_marginTopPercent="22.86%"
app:layout_marginLeftPercent="10.49%"/>
<ImageView
app:layout_widthPercent="28.9%"
app:layout_heightPercent="16.3%"
app:layout_marginTopPercent="24.6%"
app:layout_marginLeftPercent="13.5%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--第二张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_open"
app:layout_widthPercent="35.12%"
app:layout_heightPercent="19.68%"
app:layout_marginTopPercent="22.86%"
app:layout_marginRightPercent="10.49%"
android:layout_alignParentRight="true"/>
<ImageView
app:layout_widthPercent="28.9%"
app:layout_heightPercent="16.3%"
app:layout_marginTopPercent="24.6%"
app:layout_marginLeftPercent="57.6%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--将下面列表使用listview表示-->
<ListView
android:id="@+id/oliveapp_liveness_saas_list"
android:layout_alignParentBottom="true"
app:layout_widthPercent="82.7%"
app:layout_heightPercent="25.4%"
app:layout_marginBottomPercent="25.3%"
app:layout_marginLeftPercent="8.6%"
android:isScrollContainer="false"
android:divider="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
<Button
android:id="@+id/oliveapp_liveness_saas_result_retry"
android:layout_alignParentBottom="true"
app:layout_marginBottomPercent="8%"
app:layout_marginLeftPercent="6.1%"
app:layout_widthPercent="41.7%"
app:layout_aspectRatio="326%"/>
<Button
android:id="@+id/oliveapp_liveness_saas_result_return"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
app:layout_marginBottomPercent="8%"
app:layout_marginRightPercent="6.1%"
app:layout_widthPercent="41.7%"
app:layout_aspectRatio="326%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.percent.PercentRelativeLayout
android:id="@+id/oliveapp_liveness_result_list_layout"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/oliveapp_liveness_result_item"
android:gravity="center_vertical|left"
app:layout_widthPercent="70%"
app:layout_heightPercent="100%"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:textColor="#FFFFFF"
android:text="大礼包照片是否同一个人"/>
<ImageView
android:id="@+id/oliveapp_liveness_result_yesorno"
app:layout_widthPercent="10%"
app:layout_heightPercent="40%"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:src="@mipmap/oliveapp_liveness_result_right"/>
<TextView
android:id="@+id/oliveapp_liveness_result_detail"
app:layout_widthPercent="20%"
app:layout_heightPercent="50%"
app:layout_marginRightPercent="3%"
android:gravity="end"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/oliveapp_liveness_result_yesorno"
android:textColor="#6DE3E7"
android:text="0.0000000"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000">
<!--检测结果-->
<ImageView
android:id="@+id/oliveapp_liveness_result_image"
android:layout_centerHorizontal="true"
android:src="#80000000"
android:layout_height="0dp"
android:layout_width="0dp"
app:layout_marginTopPercent="13.5%"
app:layout_widthPercent="36%"
app:layout_aspectRatio="462%"/>
<!--将下面列表使用listview表示-->
<ListView
android:id="@+id/oliveapp_liveness_saas_list"
android:layout_alignParentLeft="true"
app:layout_widthPercent="40%"
app:layout_heightPercent="40%"
app:layout_marginTopPercent="33.8%"
app:layout_marginLeftPercent="8.3%"
android:isScrollContainer="false"
android:divider="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
<ImageView
android:layout_centerHorizontal="true"
app:layout_heightPercent="40%"
app:layout_widthPercent="2%"
app:layout_marginTopPercent="33%"
android:src="@mipmap/oliveapp_divider_tablet"/>
<android.support.percent.PercentRelativeLayout
app:layout_widthPercent="40%"
app:layout_heightPercent="40%"
app:layout_marginTopPercent="33%"
app:layout_marginRightPercent="8.2%"
android:layout_alignParentRight="true"
android:background="@mipmap/oliveapp_liveness_result_border">
<!--两张人脸-->
<!--第一张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_close"
app:layout_widthPercent="45%"
app:layout_heightPercent="90%"
app:layout_marginTopPercent="5%"
app:layout_marginLeftPercent="2.5%"/>
<ImageView
app:layout_widthPercent="40%"
app:layout_heightPercent="80%"
app:layout_marginTopPercent="10%"
app:layout_marginLeftPercent="5%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--第二张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_open"
app:layout_widthPercent="45%"
app:layout_heightPercent="90%"
app:layout_marginTopPercent="5%"
app:layout_marginRightPercent="2.5%"
android:layout_alignParentRight="true"/>
<ImageView
app:layout_widthPercent="40%"
app:layout_heightPercent="80%"
app:layout_marginTopPercent="10%"
app:layout_marginRightPercent="5%"
android:layout_alignParentRight="true"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
</android.support.percent.PercentRelativeLayout>
<Button
android:id="@+id/oliveapp_liveness_saas_result_finish"
android:layout_alignParentRight="true"
app:layout_marginTopPercent="82%"
app:layout_marginRightPercent="8.3%"
app:layout_widthPercent="18%"
app:layout_aspectRatio="200%"
/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_sample_saa_sresult"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.oliveapp.liveness.sample.liveness.SampleSaaSResultActivity">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--检测结果-->
<ImageView
android:id="@+id/oliveapp_liveness_result_image"
android:layout_centerHorizontal="true"
app:layout_marginTopPercent="9.7%"
app:layout_widthPercent="49.1%"
app:layout_aspectRatio="462%"/>
<ImageView
app:layout_widthPercent="87.8%"
app:layout_heightPercent="24.6%"
app:layout_marginTopPercent="20.4%"
app:layout_marginLeftPercent="6.1%"
android:layout_centerHorizontal="true"
android:background="@mipmap/oliveapp_liveness_result_border"/>
<!--两张人脸-->
<!--第一张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_close"
app:layout_widthPercent="35.12%"
app:layout_heightPercent="19.68%"
app:layout_marginTopPercent="22.86%"
app:layout_marginLeftPercent="10.49%"/>
<ImageView
app:layout_widthPercent="28.9%"
app:layout_heightPercent="16.3%"
app:layout_marginTopPercent="24.6%"
app:layout_marginLeftPercent="13.5%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--第二张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_open"
app:layout_widthPercent="35.12%"
app:layout_heightPercent="19.68%"
app:layout_marginTopPercent="22.86%"
app:layout_marginRightPercent="10.49%"
android:layout_alignParentRight="true"/>
<ImageView
app:layout_widthPercent="28.9%"
app:layout_heightPercent="16.3%"
app:layout_marginTopPercent="24.6%"
app:layout_marginLeftPercent="57.6%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--将下面列表使用listview表示-->
<ListView
android:id="@+id/oliveapp_liveness_saas_list"
android:layout_alignParentBottom="true"
app:layout_widthPercent="82.7%"
app:layout_heightPercent="25.4%"
app:layout_marginBottomPercent="25.3%"
app:layout_marginLeftPercent="8.6%"
android:isScrollContainer="false"
android:divider="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
<Button
android:id="@+id/oliveapp_liveness_saas_result_finish"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@drawable/oliveapp_liveness_finish_button_selector"
app:layout_aspectRatio="618%"
app:layout_marginBottomPercent="8%"
app:layout_widthPercent="87.8%" />
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000">
<!--检测结果-->
<ImageView
android:id="@+id/oliveapp_liveness_result_image"
android:layout_centerHorizontal="true"
app:layout_marginRightPercent="25.5%"
app:layout_marginTopPercent="9.7%"
app:layout_widthPercent="50%"
app:layout_aspectRatio="462%"/>
<ImageView
app:layout_widthPercent="87.8%"
app:layout_heightPercent="24.6%"
app:layout_marginTopPercent="20.4%"
app:layout_marginLeftPercent="6.1%"
android:layout_centerHorizontal="true"
android:background="@mipmap/oliveapp_liveness_result_border"/>
<!--两张人脸-->
<!--第一张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_close"
app:layout_widthPercent="35.12%"
app:layout_heightPercent="19.68%"
app:layout_marginTopPercent="22.86%"
app:layout_marginLeftPercent="10.49%"/>
<ImageView
app:layout_widthPercent="28.9%"
app:layout_heightPercent="16.3%"
app:layout_marginTopPercent="24.6%"
app:layout_marginLeftPercent="13.5%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--第二张-->
<ImageView
android:id="@+id/oliveapp_liveness_result_open"
app:layout_widthPercent="35.12%"
app:layout_heightPercent="19.68%"
app:layout_marginTopPercent="22.86%"
app:layout_marginRightPercent="10.49%"
android:layout_alignParentRight="true"/>
<ImageView
app:layout_widthPercent="28.9%"
app:layout_heightPercent="16.3%"
app:layout_marginTopPercent="24.6%"
app:layout_marginLeftPercent="57.6%"
android:src="@mipmap/oliveapp_liveness_result_face_border"/>
<!--将下面列表使用listview表示-->
<ListView
android:id="@+id/oliveapp_liveness_saas_list"
android:layout_alignParentBottom="true"
app:layout_widthPercent="82.7%"
app:layout_heightPercent="25.4%"
app:layout_marginBottomPercent="25.3%"
app:layout_marginLeftPercent="8.6%"
android:isScrollContainer="false"
android:divider="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
<Button
android:id="@+id/oliveapp_liveness_saas_result_finish"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@drawable/oliveapp_liveness_finish_button_selector"
app:layout_marginBottomPercent="8%"
app:layout_widthPercent="87.8%"
app:layout_aspectRatio="618%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/oliveapp_start_button_layout">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000">
<!--关闭按钮-->
<ImageButton
android:id="@+id/oliveappCloseLivenessButton"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@mipmap/oliveapp_close_icon"
app:layout_aspectRatio="100%"
app:layout_heightPercent="6%"
app:layout_marginRightPercent="6.3%"
app:layout_marginTopPercent="21%"/>
<Button
android:id="@+id/oliveappStartLivenessButton"
android:layout_alignParentRight="true"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_marginRightPercent="16%"
app:layout_marginTopPercent="60%"
app:layout_widthPercent="20%"
app:layout_aspectRatio="256%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/oliveapp_activity_vertical_margin"
android:paddingLeft="@dimen/oliveapp_activity_horizontal_margin"
android:paddingRight="@dimen/oliveapp_activity_horizontal_margin"
android:paddingTop="@dimen/oliveapp_activity_vertical_margin"
android:id="@+id/oliveapp_start_button_layout"
tools:context=".liveness.SampleStartActivity">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="#80000000"
android:scaleType="centerCrop" />
<!--关闭按钮-->
<ImageButton
android:id="@+id/oliveappCloseLivenessButton"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@mipmap/oliveapp_close_icon"
app:layout_marginRightPercent="6.6%"
app:layout_marginTopPercent="6.8%"
app:layout_widthPercent="7%"
app:layout_aspectRatio="100%"/>
<Button
android:id="@+id/oliveappStartLivenessButton"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
app:layout_marginBottomPercent="10%"
app:layout_widthPercent="73.5%"
app:layout_aspectRatio="513%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/oliveapp_start_button_layout"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="#80000000"/>
<!--关闭按钮-->
<ImageButton
android:id="@+id/oliveappCloseLivenessButton"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@mipmap/oliveapp_close_icon"
app:layout_heightPercent="4.1%"
app:layout_aspectRatio="100%"
app:layout_marginRightPercent="6.6%"
app:layout_marginTopPercent="6.8%"/>
<Button
android:id="@+id/oliveappStartLivenessButton"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_marginBottomPercent="8%"
app:layout_widthPercent="73%"
app:layout_aspectRatio="513%"/>
</android.support.percent.PercentRelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/selector_item"
android:gravity="center_vertical"
android:minHeight="50dp"
android:orientation="horizontal"
android:paddingLeft="16dp"
android:paddingRight="16dp" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginTop="4dp" >
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:singleLine="true"
android:text="title"
android:textColor="#4d4d4d"
android:textSize="18.0sp" />
<TextView
android:id="@android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:layout_toLeftOf="@android:id/widget_frame"
android:maxLines="2"
android:text="summary"
android:textColor="#AAAAAA"
android:textSize="16sp" />
<FrameLayout
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginLeft="4dp"
android:gravity="center_vertical" >
</FrameLayout>
</RelativeLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >
<ImageView
android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="20dp" />
<TextView
android:id="@+id/value"
android:paddingTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="value"
android:textSize="20sp"
android:textColor="#aaaaaa" />
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="basicConfigList" translatable="false">
<item>动作个数</item>
<item>活体超时时间</item>
<item>固定动作序列</item>
</string-array>
<string-array name="actionCountsList" translatable="false">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="fanpaiClsCountsList" translatable="false">
<item>1</item>
<item>3</item>
</string-array>
<string-array name="fanpaiClsThreshold" translatable="false">
<item>low</item>
<item>high</item>
</string-array>
<string-array name="livenessDectionOvertimeList_key" translatable="false">
<item>5秒</item>
<item>10秒</item>
<item>15秒</item>
<item>20秒</item>
<item>永不超时</item>
</string-array>
<string-array name="livenessDectionOvertimeList_value" translatable="false">
<item>5000</item>
<item>10000</item>
<item>15000</item>
<item>20000</item>
<item>1000000</item>
</string-array>
<string-array name="choiceActionSequenceList" translatable="false">
<item>张嘴</item>
<item>抬头</item>
<item>闭眼</item>
</string-array>
<string-array name="choiceActionSequenceList_value" translatable="false">
<item>1</item>
<item>53</item>
<item>3</item>
</string-array>
<string-array name="darkDetectEntry" translatable="false">
<item></item>
<item></item>
<item></item>
<item></item>
</string-array>
<string-array name="darkDetectValue" translatable="false">
<item></item>
<item></item>
<item></item>
<item></item>
</string-array>
</resources>
<resources>
<string name="oliveapp_result_hint_text_pass">Congratuation!</string>
<string name="oliveapp_result_hint_text_fail">Please retry!</string>
<string name="oliveapp_ready_hint_start">Ayo mulai</string>
<string name="oliveapp_string_second">Kedua</string>
<string name="oliveapp_string_count_down">Hitung mundur</string>
<string name="oliveapp_face_hint_focus_here">Silakan hadapi layar ponsel</string>
<string name="oliveapp_face_database_image_hint_front">Silakan ambil foto bagian depan kartu ID untuk memastikan bahwa potret dan teks jelas</string>
<string name="oliveapp_face_database_image_hint_back">Silakan ambil bagian belakang kartu ID untuk memastikan teksnya jelas</string>
<string name="oliveapp_step_hint_focus">Silakan hadapi layar</string>
<string name="oliveapp_step_hint_mouthopen">Tolong buka mulutmu</string>
<string name="oliveapp_step_hint_eyeclose">Tolong berkedip</string>
<string name="oliveapp_step_hint_headup">Tolong angkat kepalamu</string>
</resources>
<resources>
<string name="oliveapp_detected_hint_none"></string>
<string name="oliveapp_detected_hint_face_not_found">Silakan hadapi layar</string>
<string name="oliveapp_detected_hint_face_too_small_face">Tolong dekat</string>
<string name="oliveapp_detected_hint_face_too_large_face">Harap menjauh</string>
<string name="oliveapp_detected_hint_light_too_bright">Cahayanya terlalu terang</string>
<string name="oliveapp_detected_hint_light_too_dark">Cahayanya terlalu gelap</string>
<string name="oliveapp_detected_hint_face_side_face">Tolong jangan hadapi</string>
<string name="oliveapp_detected_hint_face_up_face">Tolong sujud sedikit</string>
<string name="oliveapp_detected_hint_down_face">Tolong cari sedikit</string>
</resources>
<resources>
<string name="oliveapp_app_name">Sampel uji hidup</string>
<string name="titleText">Etu Technology</string>
<string name="oliveapp_version">1.10.e</string>
<string name="subtitleText">Kode Contoh Uji Langsung</string>
<string name="hintCamera">Memotret pendaftaran</string>
<string name="hintFrontCamera">Foto kelas (potret diri)</string>
<string name="hintIdcardCapture">Pengambilan otomatis kartu ID (depan)</string>
<string name="hintIdcardBackCapture">Pengambilan otomatis kartu ID (sebaliknya)</string>
<string name="hintIDcard">Salin foto</string>
<string name="livenessButtonText">Deteksi langsung</string>
<string name="settingButtonText">Tes khusus</string>
<string name="title_activity_example_start">Antarmuka startup</string>
<string name="title_activity_example_result">Antarmuka tampilan hasil</string>
<string name="title_activity_example_liveness">Antarmuka deteksi hidup</string>
<string name="oliveapp_liveness_detection_pass_hint">Selamat ya\nTes hidup yang sukses</string>
<string name="oliveapp_liveness_detection_fail_hint">Kegagalan deteksi\nHarap kembali untuk mencoba lagi</string>
<string name="oliveapp_liveness_detection_cancel_hint">Deteksi dibatalkan\nSilakan kembali untuk mencoba lagi</string>
</resources>
<resources>
<string name="title_activity_sample_idcard">SampleIdcardActivity</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="basicConfigList" translatable="false">
<item>动作个数</item>
<item>活体超时时间</item>
<item>固定动作序列</item>
</string-array>
<string-array name="actionCountsList" translatable="false">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="fanpaiClsCountsList" translatable="false">
<item>1</item>
<item>3</item>
</string-array>
<string-array name="fanpaiClsThreshold" translatable="false">
<item>low</item>
<item>high</item>
</string-array>
<string-array name="livenessDectionOvertimeList_key" translatable="false">
<item>5秒</item>
<item>10秒</item>
<item>15秒</item>
<item>20秒</item>
<item>永不超时</item>
</string-array>
<string-array name="livenessDectionOvertimeList_value" translatable="false">
<item>5000</item>
<item>10000</item>
<item>15000</item>
<item>20000</item>
<item>1000000</item>
</string-array>
<string-array name="choiceActionSequenceList" translatable="false">
<item>张嘴</item>
<item>抬头</item>
<item>闭眼</item>
</string-array>
<string-array name="choiceActionSequenceList_value" translatable="false">
<item>1</item>
<item>53</item>
<item>3</item>
</string-array>
<string-array name="darkDetectEntry" translatable="false">
<item></item>
<item></item>
<item></item>
<item></item>
</string-array>
<string-array name="darkDetectValue" translatable="false">
<item></item>
<item></item>
<item></item>
<item></item>
</string-array>
</resources>
<resources>
<string name="oliveapp_result_hint_text_pass">Congratuation!</string>
<string name="oliveapp_result_hint_text_fail">Please retry!</string>
<string name="oliveapp_ready_hint_start">Ayo mulai</string>
<string name="oliveapp_string_second">Kedua</string>
<string name="oliveapp_string_count_down">Hitung mundur</string>
<string name="oliveapp_face_hint_focus_here">Silakan hadapi layar ponsel</string>
<string name="oliveapp_face_database_image_hint_front">Silakan ambil foto bagian depan kartu ID untuk memastikan bahwa potret dan teks jelas</string>
<string name="oliveapp_face_database_image_hint_back">Silakan ambil bagian belakang kartu ID untuk memastikan teksnya jelas</string>
<string name="oliveapp_step_hint_focus">Silakan hadapi layar</string>
<string name="oliveapp_step_hint_mouthopen">Tolong buka mulutmu</string>
<string name="oliveapp_step_hint_eyeclose">Tolong berkedip</string>
<string name="oliveapp_step_hint_headup">Tolong angkat kepalamu</string>
</resources>
<resources>
<string name="oliveapp_detected_hint_none"></string>
<string name="oliveapp_detected_hint_face_not_found">Silakan hadapi layar</string>
<string name="oliveapp_detected_hint_face_too_small_face">Tolong dekat</string>
<string name="oliveapp_detected_hint_face_too_large_face">Harap menjauh</string>
<string name="oliveapp_detected_hint_light_too_bright">Cahayanya terlalu terang</string>
<string name="oliveapp_detected_hint_light_too_dark">Cahayanya terlalu gelap</string>
<string name="oliveapp_detected_hint_face_side_face">Tolong jangan hadapi</string>
<string name="oliveapp_detected_hint_face_up_face">Tolong sujud sedikit</string>
<string name="oliveapp_detected_hint_down_face">Tolong cari sedikit</string>
</resources>
<resources>
<string name="oliveapp_app_name">Sampel uji hidup</string>
<string name="titleText">Etu Technology</string>
<string name="oliveapp_version">1.10.e</string>
<string name="subtitleText">Kode Contoh Uji Langsung</string>
<string name="hintCamera">Memotret pendaftaran</string>
<string name="hintFrontCamera">Foto kelas (potret diri)</string>
<string name="hintIdcardCapture">Pengambilan otomatis kartu ID (depan)</string>
<string name="hintIdcardBackCapture">Pengambilan otomatis kartu ID (sebaliknya)</string>
<string name="hintIDcard">Salin foto</string>
<string name="livenessButtonText">Deteksi langsung</string>
<string name="settingButtonText">Tes khusus</string>
<string name="title_activity_example_start">Antarmuka startup</string>
<string name="title_activity_example_result">Antarmuka tampilan hasil</string>
<string name="title_activity_example_liveness">Antarmuka deteksi hidup</string>
<string name="oliveapp_liveness_detection_pass_hint">Selamat ya\nTes hidup yang sukses</string>
<string name="oliveapp_liveness_detection_fail_hint">Kegagalan deteksi\nHarap kembali untuk mencoba lagi</string>
<string name="oliveapp_liveness_detection_cancel_hint">Deteksi dibatalkan\nSilakan kembali untuk mencoba lagi</string>
</resources>
<resources>
<string name="title_activity_sample_idcard">SampleIdcardActivity</string>
</resources>
......@@ -2,5 +2,4 @@
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
(such as screen margins) for screens with more than 820dp of available width. This
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
<dimen name="activity_horizontal_margin">64dp</dimen>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="basicConfigList" translatable="false">
<item>动作个数</item>
<item>活体超时时间</item>
<item>固定动作序列</item>
</string-array>
<string-array name="actionCountsList" translatable="false">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="fanpaiClsCountsList" translatable="false">
<item>1</item>
<item>3</item>
</string-array>
<string-array name="fanpaiClsThreshold" translatable="false">
<item>low</item>
<item>high</item>
</string-array>
<string-array name="livenessDectionOvertimeList_key" translatable="false">
<item>5秒</item>
<item>10秒</item>
<item>15秒</item>
<item>20秒</item>
<item>永不超时</item>
</string-array>
<string-array name="livenessDectionOvertimeList_value" translatable="false">
<item>5000</item>
<item>10000</item>
<item>15000</item>
<item>20000</item>
<item>1000000</item>
</string-array>
<string-array name="choiceActionSequenceList" translatable="false">
<item>张嘴</item>
<item>抬头</item>
<item>闭眼</item>
</string-array>
<string-array name="choiceActionSequenceList_value" translatable="false">
<item>1</item>
<item>53</item>
<item>3</item>
</string-array>
<string-array name="darkDetectEntry" translatable="false">
<item></item>
<item></item>
<item></item>
<item></item>
</string-array>
<string-array name="darkDetectValue" translatable="false">
<item></item>
<item></item>
<item></item>
<item></item>
</string-array>
</resources>
<resources>
<string name="oliveapp_result_hint_text_pass">Congratuation!</string>
<string name="oliveapp_result_hint_text_fail">Please retry!</string>
<string name="oliveapp_ready_hint_start">Ayo mulai</string>
<string name="oliveapp_string_second">Kedua</string>
<string name="oliveapp_string_count_down">Hitung mundur</string>
<string name="oliveapp_face_hint_focus_here">Silakan hadapi layar ponsel</string>
<string name="oliveapp_face_database_image_hint_front">Silakan ambil foto bagian depan kartu ID untuk memastikan bahwa potret dan teks jelas</string>
<string name="oliveapp_face_database_image_hint_back">Silakan ambil bagian belakang kartu ID untuk memastikan teksnya jelas</string>
<string name="oliveapp_step_hint_focus">Silakan hadapi layar</string>
<string name="oliveapp_step_hint_mouthopen">Tolong buka mulutmu</string>
<string name="oliveapp_step_hint_eyeclose">Tolong berkedip</string>
<string name="oliveapp_step_hint_headup">Tolong angkat kepalamu</string>
</resources>
<resources>
<string name="oliveapp_detected_hint_none"></string>
<string name="oliveapp_detected_hint_face_not_found">Silakan hadapi layar</string>
<string name="oliveapp_detected_hint_face_too_small_face">Tolong dekat</string>
<string name="oliveapp_detected_hint_face_too_large_face">Harap menjauh</string>
<string name="oliveapp_detected_hint_light_too_bright">Cahayanya terlalu terang</string>
<string name="oliveapp_detected_hint_light_too_dark">Cahayanya terlalu gelap</string>
<string name="oliveapp_detected_hint_face_side_face">Tolong jangan hadapi</string>
<string name="oliveapp_detected_hint_face_up_face">Tolong sujud sedikit</string>
<string name="oliveapp_detected_hint_down_face">Tolong cari sedikit</string>
</resources>
<resources>
<string name="oliveapp_app_name">Sampel uji hidup</string>
<string name="titleText">Etu Technology</string>
<string name="oliveapp_version">1.10.e</string>
<string name="subtitleText">Kode Contoh Uji Langsung</string>
<string name="hintCamera">Memotret pendaftaran</string>
<string name="hintFrontCamera">Foto kelas (potret diri)</string>
<string name="hintIdcardCapture">Pengambilan otomatis kartu ID (depan)</string>
<string name="hintIdcardBackCapture">Pengambilan otomatis kartu ID (sebaliknya)</string>
<string name="hintIDcard">Salin foto</string>
<string name="livenessButtonText">Deteksi langsung</string>
<string name="settingButtonText">Tes khusus</string>
<string name="title_activity_example_start">Antarmuka startup</string>
<string name="title_activity_example_result">Antarmuka tampilan hasil</string>
<string name="title_activity_example_liveness">Antarmuka deteksi hidup</string>
<string name="oliveapp_liveness_detection_pass_hint">Selamat ya\nTes hidup yang sukses</string>
<string name="oliveapp_liveness_detection_fail_hint">Kegagalan deteksi\nHarap kembali untuk mencoba lagi</string>
<string name="oliveapp_liveness_detection_cancel_hint">Deteksi dibatalkan\nSilakan kembali untuk mencoba lagi</string>
</resources>
<resources>
<string name="title_activity_sample_idcard">SampleIdcardActivity</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="basicConfigList" translatable="false">
<item>动作个数</item>
<item>活体超时时间</item>
<item>固定动作序列</item>
</string-array>
<string-array name="actionCountsList" translatable="false">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="fanpaiClsCountsList" translatable="false">
<item>1</item>
<item>3</item>
</string-array>
<string-array name="fanpaiClsThreshold" translatable="false">
<item>low</item>
<item>high</item>
</string-array>
<string-array name="livenessDectionOvertimeList_key" translatable="false">
<item>5秒</item>
<item>10秒</item>
<item>15秒</item>
<item>20秒</item>
<item>永不超时</item>
</string-array>
<string-array name="livenessDectionOvertimeList_value" translatable="false">
<item>5000</item>
<item>10000</item>
<item>15000</item>
<item>20000</item>
<item>1000000</item>
</string-array>
<string-array name="choiceActionSequenceList" translatable="false">
<item>张嘴</item>
<item>抬头</item>
<item>闭眼</item>
</string-array>
<string-array name="choiceActionSequenceList_value" translatable="false">
<item>1</item>
<item>53</item>
<item>3</item>
</string-array>
<string-array name="darkDetectEntry" translatable="false">
<item></item>
<item></item>
<item></item>
<item></item>
</string-array>
<string-array name="darkDetectValue" translatable="false">
<item></item>
<item></item>
<item></item>
<item></item>
</string-array>
</resources>
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="colorWhite">#FFFFFF</color>
<color name="navy">#FFFFFF</color>
<color name="colorDefaultBackground">#1A223E</color>
<color name="colorTabButtonSelectText">#FFFFFF</color>
<color name="colorTabButtonText">#000000</color>
<color name="itemBgColor">#fefefe</color>
<color name="itemSelectColor">#f0f0f0</color>
<color name="listLineColor">#e6e6e6</color>
<color name="itemdisabled">#f3f3f4</color>
</resources>
<resources>
<string name="oliveapp_result_hint_text_pass">Congratuation!</string>
<string name="oliveapp_result_hint_text_fail">Please retry!</string>
<string name="oliveapp_ready_hint_start">Ayo mulai</string>
<string name="oliveapp_string_second">Kedua</string>
<string name="oliveapp_string_count_down">Hitung mundur</string>
<string name="oliveapp_face_hint_focus_here">Silakan hadapi layar ponsel</string>
<string name="oliveapp_face_database_image_hint_front">Silakan ambil foto bagian depan kartu ID untuk memastikan bahwa potret dan teks jelas</string>
<string name="oliveapp_face_database_image_hint_back">Silakan ambil bagian belakang kartu ID untuk memastikan teksnya jelas</string>
......@@ -15,5 +7,4 @@
<string name="oliveapp_step_hint_mouthopen">Tolong buka mulutmu</string>
<string name="oliveapp_step_hint_eyeclose">Tolong berkedip</string>
<string name="oliveapp_step_hint_headup">Tolong angkat kepalamu</string>
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment