package com.forfan.bigbang.component.activity.screen;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.widget.CardView;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.forfan.bigbang.R;
import com.forfan.bigbang.component.activity.BigBangActivity;
import com.forfan.bigbang.component.activity.DiyOcrKeyActivity;
import com.forfan.bigbang.component.activity.WebActivity;
import com.forfan.bigbang.component.base.BaseActivity;
import com.forfan.bigbang.entity.ImageUpload;
import com.forfan.bigbang.util.ColorUtil;
import com.forfan.bigbang.util.ConstantUtil;
import com.forfan.bigbang.util.LogUtil;
import com.forfan.bigbang.util.OcrAnalsyser;
import com.forfan.bigbang.util.ToastUtil;
import com.forfan.bigbang.util.UrlCountUtil;
import com.forfan.bigbang.util.ViewUtil;
import com.forfan.bigbang.view.DialogFragment;
import com.forfan.bigbang.view.SimpleDialog;
import com.microsoft.projectoxford.vision.contract.OCR;
import com.shang.commonjar.contentProvider.SPHelper;
import com.umeng.onlineconfig.OnlineConfigAgent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Created by penglu on 2016/10/27.
*/
public class CaptureResultActivity extends BaseActivity {
public static final String HTTP_IMAGE_BAIDU_COM = "http://image.baidu.com/wiseshitu?rn=30&appid=0&tag=1&isMobile=1&";
private ImageView capturedImage;
private Bitmap bitmap;
private TextView share, save, ocr, bigbang, search;
private TextView ocrResult;
private RelativeLayout ocrResultRL;
int alpha = SPHelper.getInt(ConstantUtil.BIGBANG_ALPHA, 100);
int lastPickedColor = SPHelper.getInt(ConstantUtil.BIGBANG_DIY_BG_COLOR, Color.parseColor("#94a4bb"));
private void initWindow() {
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
DisplayMetrics localDisplayMetrics = new DisplayMetrics();
((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(localDisplayMetrics);
localLayoutParams.width = ((int) (localDisplayMetrics.widthPixels * 0.99D));
localLayoutParams.gravity = 17;
localLayoutParams.height = FrameLayout.LayoutParams.WRAP_CONTENT;
getWindow().setAttributes(localLayoutParams);
getWindow().setGravity(17);
getWindow().getAttributes().windowAnimations = R.anim.anim_scale_in;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
init();
}
private void init() {
OnlineConfigAgent.getInstance().updateOnlineConfig(getApplicationContext());
alpha = SPHelper.getInt(ConstantUtil.BIGBANG_ALPHA, 100);
lastPickedColor = SPHelper.getInt(ConstantUtil.BIGBANG_DIY_BG_COLOR, Color.parseColor("#94a4bb"));
CardView cardView = new CardView(this);
View view = LayoutInflater.from(this).inflate(R.layout.activity_capture_result, null, false);
cardView.setRadius(ViewUtil.dp2px(10));
int value = (int) ((alpha / 100.0f) * 255);
cardView.setCardBackgroundColor(Color.argb(value, Color.red(lastPickedColor), Color.green(lastPickedColor), Color.blue(lastPickedColor)));
cardView.addView(view);
getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.trans));
setContentView(cardView);
initWindow();
Intent intent = getIntent();
String fileName = intent.getStringExtra(ScreenCapture.FILE_NAME);
if (fileName == null) {
ToastUtil.show(R.string.screen_capture_fail);
finish();
return;
}
LogUtil.d("CaptureResultActivity", fileName);
File capturedFile = new File(fileName);
if (capturedFile.exists()) {
bitmap = BitmapFactory.decodeFile(fileName);
} else {
ToastUtil.show(R.string.screen_capture_fail);
finish();
return;
}
ocrResult = (TextView) findViewById(R.id.ocr_result);
ocrResultRL = (RelativeLayout) findViewById(R.id.ocr_result_rl);
capturedImage = (ImageView) findViewById(R.id.captured_pic);
share = (TextView) findViewById(R.id.share);
save = (TextView) findViewById(R.id.save);
ocr = (TextView) findViewById(R.id.recognize);
bigbang = (TextView) findViewById(R.id.bigbang);
search = (TextView) findViewById(R.id.search);
ocrResultRL.setVisibility(View.GONE);
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
DisplayMetrics localDisplayMetrics = new DisplayMetrics();
((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(localDisplayMetrics);
if (bitmap.getHeight() > localDisplayMetrics.heightPixels * 2 / 3 || 1.0 * bitmap.getHeight() / bitmap.getWidth() >= 1.2) {
LinearLayout container = (LinearLayout) findViewById(R.id.container);
container.setOrientation(LinearLayout.HORIZONTAL);
capturedImage.setMaxWidth(localDisplayMetrics.widthPixels / 2);
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) capturedImage.getLayoutParams();
if (bitmap.getWidth() > localDisplayMetrics.widthPixels / 2) {
layoutParams.width = bitmap.getWidth() * 2 / 5;
layoutParams.height = bitmap.getHeight() * 2 / 5;
} else {
layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT;
layoutParams.gravity = Gravity.CENTER_HORIZONTAL;
}
capturedImage.setLayoutParams(layoutParams);
layoutParams = (LinearLayout.LayoutParams) ocrResultRL.getLayoutParams();
layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT;
layoutParams.gravity = Gravity.CENTER_VERTICAL;
ocrResultRL.setLayoutParams(layoutParams);
}
capturedImage.setImageBitmap(bitmap);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
UrlCountUtil.onEvent(UrlCountUtil.CLICK_CAPTURERESULT_SAVE);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/", format.format(new Date()) + ".jpg");
file.getParentFile().mkdirs();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(file));
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(file);
intent.setData(uri);
sendBroadcast(intent);
ToastUtil.show(getResources().getString(R.string.save_sd_card));
} catch (FileNotFoundException e) {
e.printStackTrace();
ToastUtil.show(R.string.save_sd_card_fail);
}
}
}
);
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
UrlCountUtil.onEvent(UrlCountUtil.CLICK_CAPTURERESULT_SHARE);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/", format.format(new Date()) + ".jpg");
file.getParentFile().mkdirs();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(file));
shareMsg("分享给", "截图", "来自bigbang的截图", file.getAbsolutePath());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtil.show(R.string.upload_img);
OcrAnalsyser.getInstance().uploadImage(CaptureResultActivity.this, fileName, new OcrAnalsyser.ImageUploadCallBack() {
@Override
public void onSucess(ImageUpload imageUpload) {
if(imageUpload != null &&
imageUpload.getData() != null &&
!TextUtils.isEmpty(imageUpload.getData().getUrl())){
String url = HTTP_IMAGE_BAIDU_COM +
"queryImageUrl=" +imageUpload.getData().getUrl()+
"&querySign=4074500770,3618317556&fromProduct= ";
Intent intent = new Intent();
intent.putExtra("url",url);
intent.setClass(CaptureResultActivity.this,WebActivity.class);
startActivity(intent);
}else {
ToastUtil.show(R.string.upload_img_fail);
}
}
@Override
public void onFail(Throwable throwable) {
ToastUtil.show(throwable.getMessage());
}
});
}
});
ocr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (SPHelper.getInt(ConstantUtil.OCR_TIME, 0) == ConstantUtil.OCR_TIME_TO_ALERT) {
showBeyondQuoteDialog();
int time = SPHelper.getInt(ConstantUtil.OCR_TIME, 0) + 1;
SPHelper.save(ConstantUtil.OCR_TIME, time);
return;
}
ToastUtil.show(R.string.ocr_recognize);
UrlCountUtil.onEvent(UrlCountUtil.CLICK_CAPTURERESULT_OCR);
OcrAnalsyser.getInstance().analyse(CaptureResultActivity.this, fileName, true, new OcrAnalsyser.CallBack() {
@Override
public void onSucess(OCR ocr) {
ocrResultRL.setVisibility(View.VISIBLE);
ocrResult.setText(OcrAnalsyser.getInstance().getPasedMiscSoftText(ocr));
ocrResult.setTextColor(ColorUtil.getPropertyTextColor(lastPickedColor, alpha));
}
@Override
public void onFail(Throwable throwable) {
if (SPHelper.getString(ConstantUtil.DIY_OCR_KEY, "").equals("")) {
ToastUtil.show(getResources().getString(R.string.ocr_useup_toast));
} else {
ToastUtil.show(throwable.getMessage());
}
}
});
}
});
bigbang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UrlCountUtil.onEvent(UrlCountUtil.CLICK_CAPTURERESULT_BIGBANG);
if (TextUtils.isEmpty(ocrResult.getText())) {
if (SPHelper.getInt(ConstantUtil.OCR_TIME, 0) == ConstantUtil.OCR_TIME_TO_ALERT) {
showBeyondQuoteDialog();
int time = SPHelper.getInt(ConstantUtil.OCR_TIME, 0) + 1;
SPHelper.save(ConstantUtil.OCR_TIME, time);
return;
}
ToastUtil.show(R.string.ocr_recognize);
OcrAnalsyser.getInstance().analyse(CaptureResultActivity.this, fileName, true, new OcrAnalsyser.CallBack() {
@Override
public void onSucess(OCR ocr) {
if (!TextUtils.isEmpty(ocrResult.getText())) {
Intent intent = new Intent(CaptureResultActivity.this, BigBangActivity.class);
intent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(BigBangActivity.TO_SPLIT_STR, ocrResult.getText());
startActivity(intent);
finish();
} else {
Intent intent = new Intent(CaptureResultActivity.this, BigBangActivity.class);
intent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(BigBangActivity.TO_SPLIT_STR, OcrAnalsyser.getInstance().getPasedMiscSoftText(ocr));
startActivity(intent);
finish();
}
}
@Override
public void onFail(Throwable throwable) {
if (SPHelper.getString(ConstantUtil.DIY_OCR_KEY, "").equals("")) {
ToastUtil.show(getResources().getString(R.string.ocr_useup_toast));
} else {
ToastUtil.show(throwable.getMessage());
}
}
});
} else {
if (!TextUtils.isEmpty(ocrResult.getText())) {
Intent intent = new Intent(CaptureResultActivity.this, BigBangActivity.class);
intent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(BigBangActivity.TO_SPLIT_STR, ocrResult.getText().toString());
startActivity(intent);
finish();
}
}
}
});
ocrResult.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
UrlCountUtil.onEvent(UrlCountUtil.CLICK_CAPTURERESULT_OCRRESULT);
if (!TextUtils.isEmpty(ocrResult.getText())) {
Intent intent = new Intent(CaptureResultActivity.this, BigBangActivity.class);
intent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(BigBangActivity.TO_SPLIT_STR, ocrResult.getText().toString());
startActivity(intent);
finish();
}
return true;
}
});
share.setTextColor(ColorUtil.getPropertyTextColor(lastPickedColor, alpha));
save.setTextColor(ColorUtil.getPropertyTextColor(lastPickedColor, alpha));
ocr.setTextColor(ColorUtil.getPropertyTextColor(lastPickedColor, alpha));
bigbang.setTextColor(ColorUtil.getPropertyTextColor(lastPickedColor, alpha));
search.setTextColor(ColorUtil.getPropertyTextColor(lastPickedColor, alpha));
}
private void showBeyondQuoteDialog() {
SimpleDialog.Builder builder = new SimpleDialog.Builder(R.style.SimpleDialogLight) {
@Override
public void onPositiveActionClicked(DialogFragment fragment) {
// 这里是保持开启
UrlCountUtil.onEvent(UrlCountUtil.CLICK_SHOW_BEYOND_QUOTE);
super.onPositiveActionClicked(fragment);
Intent intent = new Intent();
intent.setClass(CaptureResultActivity.this, DiyOcrKeyActivity.class);
startActivity(intent);
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onCancel(dialog);
}
};
builder.message(this.getString(R.string.ocr_quote_beyond_time))
.positiveAction(this.getString(R.string.free_use));
DialogFragment fragment = DialogFragment.newInstance(builder);
fragment.show(getSupportFragmentManager(), null);
}
/**
* 分享功能
*
* @param context 上下文
* @param activityTitle Activity的名字
* @param msgTitle 消息标题
* @param msgText 消息内容
* @param imgPath 图片路径,不分享图片则传null
*/
public void shareMsg(String activityTitle, String msgTitle, String msgText,
String imgPath) {
Intent intent = new Intent(Intent.ACTION_SEND);
if (imgPath == null || imgPath.equals("")) {
intent.setType("text/plain"); // 纯文本
} else {
File f = new File(imgPath);
if (f != null && f.exists() && f.isFile()) {
intent.setType("image/jpg");
Uri u = Uri.fromFile(f);
intent.putExtra(Intent.EXTRA_STREAM, u);
}
}
intent.putExtra(Intent.EXTRA_SUBJECT, msgTitle);
intent.putExtra(Intent.EXTRA_TEXT, msgText);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, activityTitle));
}
@Override
public void onBackPressed() {
// if (bigBangLayoutWrapper.getVisibility() == View.GONE) {
// bigBangLayoutWrapper.setVisibility(View.VISIBLE);
// transRl.setVisibility(View.GONE);
// } else {
super.onBackPressed();
// }
}
}