package com.android.imageai;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.ImageFormat;
import android.graphics.Rect;
import android.graphics.YuvImage;
import android.hardware.Camera;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;
import com.baidu.tts.tools.SharedPreferencesUtils;
import org.json.JSONException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback{
private final String TAG=MainActivity.class.getSimpleName();
private OptionFragment mOptionFragment;
private ResultFragment mResultFragment;
private Camera mCamera;
private int rotation;
private boolean bfrontSwitch=false;
private boolean isGetBuffer=false;
private Camera.Parameters parameters;
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
private boolean isPause=false;
private ImageView camera_switch;
private TextView tv_hint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
setContentView(R.layout.activity_suface);
//init();
tv_hint=findViewById(R.id.tv_imageclassfy_hint);
mSurfaceView=(SurfaceView)findViewById(R.id.view_surface);//获取surfaceView控件
mSurfaceHolder=mSurfaceView.getHolder();//获取holder参数
mSurfaceHolder.addCallback(this);//设置holder的回调
camera_switch=findViewById(R.id.btn_camera_switch);
camera_switch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
stopPreview();
bfrontSwitch=!bfrontSwitch;
isGetBuffer=false;
initCamera();
}
});
/* if(Camera.getNumberOfCameras()>1){
camera_switch.setVisibility(View.VISIBLE);
}else{
camera_switch.setVisibility(View.INVISIBLE);
}*/
mSurfaceView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
handler.sendEmptyMessageDelayed(0,500);
}
});
}
private void initCamera(){
if(mCamera==null){
if(bfrontSwitch){
mCamera=Camera.open(1);//前置
rotation=270;
}else{
mCamera=Camera.open(0);//后置
rotation=90;
}
}
mCamera.setDisplayOrientation(rotation);
parameters=mCamera.getParameters();
parameters.setPreviewFormat(ImageFormat.NV21);//default默认为21,所有手机均支持NV21
parameters.setPreviewSize(480,480);//设置预览分辨率
parameters.setPreviewFrameRate(25);
mCamera.setParameters(parameters);
try {
mCamera.setPreviewDisplay(mSurfaceHolder);
} catch (IOException e) {
e.printStackTrace();
}
mCamera.startPreview();
// handler.sendEmptyMessageDelayed(0,2000);
}
private void init() {
mOptionFragment = new OptionFragment();
mResultFragment = new ResultFragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragment_layout, mOptionFragment).commit();
}
public void toResult() {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_layout, mResultFragment);
transaction.addToBackStack(null);
transaction.commit();
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
System.out.println("zycheng surfaceCreated");
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
System.out.println("zycheng surfaceChanged");
initCamera();
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
System.out.println("zycheng surfaceDestroyed");
stopPreview();
}
private void stopPreview(){
if (mCamera!=null) {
handler.removeMessages(0);
handler.removeMessages(1);
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera.release();
mCamera=null;
}
}
private void getPreViewImage() {
mCamera.setPreviewCallback(new Camera.PreviewCallback(){
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
System.out.println("zycheng onPreviewFrame isGetBuffer="+isGetBuffer);
if(isGetBuffer){
return;
}
isGetBuffer=true;
new MyAsyncTask(data).execute();
/* new Thread() {
@Override
public void run() {
super.run();
YuvImage image = new YuvImage(rotateYUV420Degree90(data,480,480),ImageFormat.NV21,480,480,null);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compressToJpeg(new Rect(0,0,480,480),95,stream);
ImageInfo.bitmap=BitmapFactory.decodeByteArray(stream.toByteArray(),0,stream.size());
ImageInfo.discernResult = ImageClassifyClient.getInst().getImageClassify(stream.toByteArray());
//Log.i("zycheng","zycheng str=" + ImageInfo.discernResult);
mHandler.post(mUpdateResults);
}
}.start();*/
}
});
}
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
System.out.println("zycheng isGetBuffer="+isGetBuffer);
switch(msg.what){
case 0:
getPreViewImage();
//handler.sendEmptyMessageDelayed(1,500);
break;
case 1:
mCamera.setPreviewCallback(null);
isGetBuffer=false;
//handler.sendEmptyMessageDelayed(0, 2000);
break ;
}
};
};
private Handler mHandler = new Handler();
private Runnable mUpdateResults = new Runnable() {
@Override
public void run() {
updateUI();
}
};
private void updateUI() {
handler.sendEmptyMessage(1);
try {
ArrayList<ImageResultBean> list = JSONUtil.analysisJSON(ImageInfo.discernResult);
if (list != null) {
ImageInfo.description=list.get(0).getDescription();
ImageInfo.score=list.get(0).getScore();
ImageInfo.keyword=list.get(0).getKeyword();
String resultText = getString(R.string.discern_result, list.get(0).getRoot(), list.get(0).getKeywo
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
ImageAIApplication.7z (135个子文件)
gradlew.bat 2KB
executionHistory.bin 3.87MB
classAnalysis.bin 389KB
fileHashes.bin 318KB
outputFiles.bin 92KB
jarAnalysis.bin 66KB
taskHistory.bin 42KB
resourceHashesCache.bin 18KB
last-build.bin 1B
.gitignore 216B
.gitignore 8B
build.gradle 1KB
build.gradle 585B
settings.gradle 16B
gradlew 5KB
app.iml 15KB
ImageAIApplication.iml 890B
com.baidu.tts_2.5.5.109.20191014_01b8485.jar 389KB
aip-java-sdk-4.11.3.jar 79KB
json-20160810.jar 53KB
gradle-wrapper.jar 53KB
slf4j-api-1.7.25.jar 40KB
slf4j-simple-1.7.25.jar 15KB
MainActivity.java 13KB
ResultActivity.java 7KB
Uri2PathUtil.java 6KB
OptionFragment.java 4KB
ResultFragment.java 3KB
JSONUtil.java 2KB
ImageClassifyClient.java 2KB
ImageResultBean.java 2KB
ExampleInstrumentedTest.java 736B
ErrorInfo.java 702B
MyApplication.java 541B
BuildConfig.java 445B
ExampleUnitTest.java 396B
ImageInfo.java 367B
javaCompile.lock 17B
buildOutputCleanup.lock 17B
fileContent.lock 17B
fileHashes.lock 17B
executionHistory.lock 17B
ic_launcher_round.png 15KB
ic_launcher_round.png 10KB
ic_launcher.png 9KB
ic_launcher_round.png 7KB
ic_launcher.png 6KB
ic_launcher_round.png 5KB
ic_launcher.png 4KB
ic_launcher.png 3KB
ic_launcher_round.png 3KB
record_camera_switch_normal.png 3KB
ic_launcher.png 2KB
button_bg_press.png 583B
button_bg_default.png 573B
proguard-rules.pro 909B
gradle.properties 1KB
local.properties 377B
gradle-wrapper.properties 238B
cache.properties 53B
gc.properties 0B
gc.properties 0B
gradle_models.ser 114KB
build_file_checksums.ser 539B
libbd_etts.so 1.8MB
libgnustl_shared.so 694KB
libBDSpeechDecoder_V1.so 373KB
workspace.xml 33KB
ic_launcher_background.xml 6KB
activity_result.xml 2KB
ic_launcher_foreground.xml 2KB
activity_suface.xml 2KB
option_layout.xml 1KB
AndroidManifest.xml 1KB
result_layout.xml 875B
Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml 815B
activity_main.xml 801B
Gradle__androidx_appcompat_appcompat_1_1_0_aar.xml 800B
Gradle__androidx_fragment_fragment_1_1_0_aar.xml 795B
Gradle__androidx_core_core_1_1_0_aar.xml 775B
Gradle__androidx_test_espresso_espresso_idling_resource_3_2_0_aar.xml 685B
Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml 684B
Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml 682B
Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml 674B
Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_aar.xml 662B
Gradle__androidx_appcompat_appcompat_resources_1_1_0_aar.xml 662B
Gradle__com_jakewharton_butterknife_runtime_10_0_0_aar.xml 659B
Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml 659B
Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml 657B
Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml 656B
Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml 652B
Gradle__androidx_test_espresso_espresso_core_3_2_0_aar.xml 652B
Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml 647B
Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml 641B
misc.xml 638B
Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml 637B
Gradle__androidx_customview_customview_1_0_0_aar.xml 637B
Gradle__com_jakewharton_butterknife_10_0_0_aar.xml 635B
Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml 632B
Gradle__androidx_activity_activity_1_0_0_aar.xml 627B
共 135 条
- 1
- 2
资源评论
android_xc
- 粉丝: 8
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功