Skip to content

Commit

Permalink
#update bugly提示和拍照效果
Browse files Browse the repository at this point in the history
  • Loading branch information
wumeng1 authored and wumeng1 committed Jun 13, 2022
1 parent 2c4c99e commit c56db72
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 155 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ ext {
targetSdkVersion = 29
minSdkVersion = 21

mvm_version = '1.0.91'
mvm_version = '1.0.92'
core_ktx_version = '1.6.0'
appcompat_version = '1.3.1'
material_version = '1.4.0'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public static void init(Context context, String appId, boolean isDebug) {

public static void init(Context context, String appId, String channel, boolean isDebug) {
//注意这些设置在bugly init之前
Beta.strToastYourAreTheLatestVersion = null; //取消 最新版本的提示
Beta.upgradeDialogLayoutId = R.layout.up_dialog_upgrade;
BuglyManager.setUpgradeListener(new UpgradeListener() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import androidx.annotation.DrawableRes;
Expand Down Expand Up @@ -30,6 +31,7 @@ public class CameraActivity extends AppCompatActivity {
protected CameraScan mCameraScan;
protected ImageView mTakePhoto;
protected ImageView mFlashlight;
protected View mBlackMask;


@Override
Expand All @@ -53,6 +55,7 @@ public void initUI() {
BarUtils.transparentStatusBar(this);

mPreviewView = findViewById(R.id.mPreviewView);
mBlackMask = findViewById(R.id.mBlackMask);
ImageView mSwitchCamera = findViewById(R.id.mSwitchCamera);
mSwitchCamera.setOnClickListener(v -> switchCamera());

Expand Down Expand Up @@ -154,10 +157,14 @@ public void startCamera() {
}

public void takePhoto() {
File photo = new File(FileUtil.getDiskExternalPath("Mirko") + "/" + System.currentTimeMillis() + ".jpg");
shotAnim();
mTakePhoto.setEnabled(false);
File photo = FileUtil.createCameraFile(this,"IMG_" + System.currentTimeMillis() + ".jpg");
mCameraScan.takePhoto(photo, new ImageCapture.OnImageSavedCallback() {
@Override
public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
mTakePhoto.setEnabled(true);

// Uri uri = outputFileResults.getSavedUri();
boolean result = FileUtil.addGraphToGallery(CameraActivity.this, photo);
LogUtil.e(TAG, "onImageSaved : " + result);
Expand All @@ -166,6 +173,7 @@ public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResul
@Override
public void onError(@NonNull ImageCaptureException exception) {
LogUtil.e(TAG, "ImageCaptureException " + exception.toString());
mTakePhoto.setEnabled(true);
}
});
}
Expand Down Expand Up @@ -203,12 +211,16 @@ public void toggleFlashMode() {
if (mode == ImageCapture.FLASH_MODE_OFF) {
mCameraScan.setFlashMode(ImageCapture.FLASH_MODE_ON);
updateFlashlightUI(R.drawable.camera_svg_flash_light_on);
} else if (mode == ImageCapture.FLASH_MODE_ON) {
mCameraScan.setFlashMode(ImageCapture.FLASH_MODE_AUTO);
updateFlashlightUI(R.drawable.camera_svg_flash_light_auto);
mCameraScan.enableTorch(true);
} else {
mCameraScan.setFlashMode(ImageCapture.FLASH_MODE_OFF);
updateFlashlightUI(R.drawable.camera_svg_flash_light_off);
mCameraScan.enableTorch(false);
if (mode == ImageCapture.FLASH_MODE_ON) {
mCameraScan.setFlashMode(ImageCapture.FLASH_MODE_AUTO);
updateFlashlightUI(R.drawable.camera_svg_flash_light_auto);
} else {
mCameraScan.setFlashMode(ImageCapture.FLASH_MODE_OFF);
updateFlashlightUI(R.drawable.camera_svg_flash_light_off);
}
}
}
}
Expand All @@ -231,6 +243,21 @@ public void switchCamera() {
}
}

/**
* 模拟快门动画
*/
public void shotAnim() {
mBlackMask.setVisibility(View.VISIBLE);
mBlackMask.postDelayed(new Runnable() {
@Override
public void run() {
if (mBlackMask != null) {
mBlackMask.setVisibility(View.GONE);
}
}
}, 100);
}

//
// @Override
// public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
Expand Down
7 changes: 7 additions & 0 deletions lib_camera/src/main/res/layout/camera_layout_preview.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@
android:layout_width="match_parent"
android:layout_height="match_parent" />

<View
android:id="@+id/mBlackMask"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#90000000" />

<ImageView
android:id="@+id/mFlashlight"
android:layout_width="40dp"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import androidx.fragment.app.Fragment;

import com.mirkowu.lib_photo.R;
import com.mirkowu.lib_util.FileUtil;
import com.mirkowu.lib_util.PermissionsUtil;

import java.io.File;
Expand Down Expand Up @@ -123,7 +124,7 @@ private static Intent createCameraIntent(Context context) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(context.getPackageManager()) != null) {
try {
sTmpFile = FileUtils.createTmpFile(context);
sTmpFile = FileUtil.createCameraTmpFile(context);
} catch (IOException e) {
e.printStackTrace();
}
Expand Down
116 changes: 0 additions & 116 deletions lib_photo/src/main/java/com/mirkowu/lib_photo/utils/FileUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;

Expand All @@ -20,17 +18,12 @@
import java.io.FileOutputStream;
import java.io.IOException;

import static android.os.Environment.MEDIA_MOUNTED;

/**
* 文件操作类
* Created by Nereo on 2015/4/8.
*/
public class FileUtils {

private static final String JPEG_FILE_PREFIX = "IMG_";
private static final String JPEG_FILE_SUFFIX = ".jpg";

public static Uri createFileUri(Context context, File file) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
String authority = context.getPackageName() + ".mvm_ivp.fileProvider";
Expand All @@ -40,115 +33,6 @@ public static Uri createFileUri(Context context, File file) {
}
}


public static File createTmpFile(Context context) throws IOException {
File dir = null;
if (TextUtils.equals(Environment.getExternalStorageState(), Environment.MEDIA_MOUNTED)) {
dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
if (!dir.exists()) {
dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM + "/Camera");
if (!dir.exists()) {
dir = getCacheDirectory(context, true);
}
}
} else {
dir = getCacheDirectory(context, true);
}
return File.createTempFile(JPEG_FILE_PREFIX, JPEG_FILE_SUFFIX, dir);
}


private static final String EXTERNAL_STORAGE_PERMISSION = "android.permission.WRITE_EXTERNAL_STORAGE";

/**
* Returns application cache directory. Cache directory will be created on SD card
* <i>("/Android/data/[app_package_name]/cache")</i> if card is mounted and app has appropriate permission. Else -
* Android defines cache directory on device's file system.
*
* @param context Application context
* @return Cache {@link File directory}.<br />
* <b>NOTE:</b> Can be null in some unpredictable cases (if SD card is unmounted and
* {@link Context#getCacheDir() Context.getCacheDir()} returns null).
*/
public static File getCacheDirectory(Context context) {
return getCacheDirectory(context, true);
}

/**
* Returns application cache directory. Cache directory will be created on SD card
* <i>("/Android/data/[app_package_name]/cache")</i> (if card is mounted and app has appropriate permission) or
* on device's file system depending incoming parameters.
*
* @param context Application context
* @param preferExternal Whether prefer external location for cache
* @return Cache {@link File directory}.<br />
* <b>NOTE:</b> Can be null in some unpredictable cases (if SD card is unmounted and
* {@link Context#getCacheDir() Context.getCacheDir()} returns null).
*/
public static File getCacheDirectory(Context context, boolean preferExternal) {
File appCacheDir = null;
String externalStorageState;
try {
externalStorageState = Environment.getExternalStorageState();
} catch (NullPointerException e) { // (sh)it happens (Issue #660)
externalStorageState = "";
} catch (IncompatibleClassChangeError e) { // (sh)it happens too (Issue #989)
externalStorageState = "";
}
if (preferExternal && MEDIA_MOUNTED.equals(externalStorageState) && hasExternalStoragePermission(context)) {
appCacheDir = getExternalCacheDir(context);
}
if (appCacheDir == null) {
appCacheDir = context.getCacheDir();
}
if (appCacheDir == null) {
String cacheDirPath = "/data/data/" + context.getPackageName() + "/cache/";
appCacheDir = new File(cacheDirPath);
}
return appCacheDir;
}

/**
* Returns individual application cache directory (for only image caching from ImageEngine). Cache directory will be
* created on SD card <i>("/Android/data/[app_package_name]/cache/uil-images")</i> if card is mounted and app has
* appropriate permission. Else - Android defines cache directory on device's file system.
*
* @param context Application context
* @param cacheDir Cache directory path (e.g.: "AppCacheDir", "AppDir/cache/images")
* @return Cache {@link File directory}
*/
public static File getIndividualCacheDirectory(Context context, String cacheDir) {
File appCacheDir = getCacheDirectory(context);
File individualCacheDir = new File(appCacheDir, cacheDir);
if (!individualCacheDir.exists()) {
if (!individualCacheDir.mkdir()) {
individualCacheDir = appCacheDir;
}
}
return individualCacheDir;
}

private static File getExternalCacheDir(Context context) {
File dataDir = new File(new File(Environment.getExternalStorageDirectory(), "Android"), "data");
File appCacheDir = new File(new File(dataDir, context.getPackageName()), "cache");
if (!appCacheDir.exists()) {
if (!appCacheDir.mkdirs()) {
return null;
}
try {
new File(appCacheDir, ".nomedia").createNewFile();
} catch (IOException e) {
}
}
return appCacheDir;
}

private static boolean hasExternalStoragePermission(Context context) {
int perm = context.checkCallingOrSelfPermission(EXTERNAL_STORAGE_PERMISSION);
return perm == PackageManager.PERMISSION_GRANTED;
}


public static void saveBitmapToGallery(Context context, Bitmap bitmap, File dirFile, String saveName) {
if (dirFile != null && dirFile.exists() && dirFile.isDirectory()) {

Expand Down
Loading

0 comments on commit c56db72

Please sign in to comment.