From e63380fc6968420d29becf1e14a2076f217ab1a2 Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 11 May 2020 16:18:01 +0800 Subject: [PATCH 01/36] [CDR9020_BIT_v1.0.0] 1.add wifi and bt on/off at runtime. --- app/src/main/AndroidManifest.xml | 16 +- .../main/java/com/askey/bit/Configini.java | 59 +++++ .../java/com/askey/{record => bit}/Utils.java | 46 +++- .../{record => bit}/VideoRecordActivity.java | 246 ++++++++++++------ .../{record => bit}/checkSdCardService.java | 24 +- .../{record => bit}/copyFileService.java | 16 +- .../{record => bit}/restartActivity.java | 14 +- .../askey/{record => bit}/saveLogService.java | 30 +-- .../main/java/com/askey/record/Configini.java | 53 ---- .../askey/widget/CustomPageTransformer.java | 2 +- .../java/com/askey/widget/CustomTextView.java | 2 +- .../main/java/com/askey/widget/LogMsg.java | 2 +- .../java/com/askey/widget/PropertyUtils.java | 0 .../askey/widget/VerticalPageTransformer.java | 2 +- .../askey/widget/VerticalPagerContainer.java | 0 .../com/askey/widget/VerticalViewPager.java | 0 .../com/askey/widget/mLogListAdapter.java | 2 +- app/src/main/res/values/strings.xml | 5 +- 18 files changed, 332 insertions(+), 187 deletions(-) create mode 100644 app/src/main/java/com/askey/bit/Configini.java rename app/src/main/java/com/askey/{record => bit}/Utils.java (94%) rename app/src/main/java/com/askey/{record => bit}/VideoRecordActivity.java (89%) rename app/src/main/java/com/askey/{record => bit}/checkSdCardService.java (90%) rename app/src/main/java/com/askey/{record => bit}/copyFileService.java (90%) rename app/src/main/java/com/askey/{record => bit}/restartActivity.java (71%) rename app/src/main/java/com/askey/{record => bit}/saveLogService.java (82%) delete mode 100644 app/src/main/java/com/askey/record/Configini.java mode change 100755 => 100644 app/src/main/java/com/askey/widget/CustomTextView.java mode change 100755 => 100644 app/src/main/java/com/askey/widget/PropertyUtils.java mode change 100755 => 100644 app/src/main/java/com/askey/widget/VerticalPageTransformer.java mode change 100755 => 100644 app/src/main/java/com/askey/widget/VerticalPagerContainer.java mode change 100755 => 100644 app/src/main/java/com/askey/widget/VerticalViewPager.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c96370d..e60ddcc 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ @@ -17,6 +17,10 @@ + + + + @@ -36,14 +40,14 @@ - - - + + + diff --git a/app/src/main/java/com/askey/bit/Configini.java b/app/src/main/java/com/askey/bit/Configini.java new file mode 100644 index 0000000..f296dc5 --- /dev/null +++ b/app/src/main/java/com/askey/bit/Configini.java @@ -0,0 +1,59 @@ +package com.askey.bit; + +import android.content.Context; + +import static com.askey.bit.Utils.CONFIG_TITLE; +import static com.askey.bit.Utils.configName; +import static com.askey.bit.Utils.logName; + +public class Configini { + + protected Context context; + protected String firstCamera = "0"; + protected String secondCamera = "1"; + protected int numberOfRuns = 999; + protected boolean isNew = true; + + public Configini(Context context) { + this.context = context; + } + + public Configini(Context context, String firstCamera, String secondCamera, int isRuns, boolean isNew) { + this.context = context; + this.firstCamera = firstCamera; + this.secondCamera = secondCamera; + this.numberOfRuns = isRuns; + this.isNew = isNew; + } + + protected String[] config() { + return new String[]{ + CONFIG_TITLE + context.getString(R.string.app_name) + "\r\n", + "#CameraID (0:Outer, 1:Inner, 2:External)\r\n", + "firstCameraID = " + firstCamera + "\r\n", + "secondCameraID = " + secondCamera + "\r\n", "\r\n", + "#Total number of runs (1 record is 1 min)\r\n", + "numberOfRuns = " + numberOfRuns + "\r\n", "\r\n", + "#Set Property\r\n", + "setProperty = " + isNew + "\r\n", "\r\n", + "#Video path\r\n", + "first camera = /sdcard/v(yyMMddHHmmss)f.mp4\r\n", + "second camera = /sdcard/v(yyMMddHHmmss)s.mp4\r\n", "\r\n", + "#Recording in SD card for front, back or external camera\r\n", + "#Recording high quality videos with 1080p / 720p\r\n", + "#Recording custom frame rates from 13.7 / 27.5\r\n", + "#Recording custom video Bit Rate 6Mbps\r\n", + "#" + configName + " will build in Internal shared storage/DCIM/ for initial camera device or record time\r\n", + "#" + configName + " failed to read column string or not exists will rebuild\r\n", + "#" + logName + " will build in Internal shared storage/DCIM/ for save application log message\r\n", + "#" + logName + " not exists will rebuild\r\n", + "#" + logName + " will copy to SD card when record complete\r\n", + "#Delete old videos when SD card full\r\n", + "#At the recording video, please don't copy the SD card file\r\n", + "#At least 1 Gb memory needs to be available to record\r\n", + "#Need reboot device to wake up the External camera\r\n", + "#Inner and External can't be used at the same time\r\n", + "#Application will reset when external camera error\r\n", "\r\n" + }; + } +} diff --git a/app/src/main/java/com/askey/record/Utils.java b/app/src/main/java/com/askey/bit/Utils.java similarity index 94% rename from app/src/main/java/com/askey/record/Utils.java rename to app/src/main/java/com/askey/bit/Utils.java index ad51ffe..f4be58c 100644 --- a/app/src/main/java/com/askey/record/Utils.java +++ b/app/src/main/java/com/askey/bit/Utils.java @@ -1,4 +1,4 @@ -package com.askey.record; +package com.askey.bit; import android.annotation.SuppressLint; import android.content.Context; @@ -25,9 +25,9 @@ import java.util.ArrayList; import java.util.Calendar; -import static com.askey.record.VideoRecordActivity.SD_Mode; -import static com.askey.record.VideoRecordActivity.onReset; -import static com.askey.record.VideoRecordActivity.saveLog; +import static com.askey.bit.VideoRecordActivity.SD_Mode; +import static com.askey.bit.VideoRecordActivity.onReset; +import static com.askey.bit.VideoRecordActivity.saveLog; public class Utils { public static final double[] DFRAME_RATE = {16, 27.5}, @@ -38,9 +38,13 @@ public class Utils { public static final String FRAMESKIP = "persist.our.camera.fps"; public static final String EXTRA_VIDEO_RUN = "RestartActivity.run"; public static final String EXTRA_VIDEO_FAIL = "RestartActivity.fail"; + public static final String EXTRA_VIDEO_WIFI_FAIL = "RestartActivity.wifi.fail"; + public static final String EXTRA_VIDEO_BT_FAIL = "RestartActivity.bt.fail"; public static final String EXTRA_VIDEO_RESET = "RestartActivity.reset"; public static final String EXTRA_VIDEO_RECORD = "RestartActivity.record"; public static final String EXTRA_VIDEO_SUCCESS = "RestartActivity.success"; + public static final String EXTRA_VIDEO_WIFI_SUCCESS = "RestartActivity.wifi.success"; + public static final String EXTRA_VIDEO_BT_SUCCESS = "RestartActivity.bt.success"; public static final String EXTRA_VIDEO_COPY = "RestartActivity.copy"; public static final String EXTRA_VIDEO_PASTE = "RestartActivity.paste"; public static final String EXTRA_VIDEO_REMOVE = "RestartActivity.remove"; @@ -48,10 +52,14 @@ public class Utils { public static final String EXTRA_VIDEO_REFORMAT = "RestartActivity.reformat"; public static final String NO_SD_CARD = "SD card is not available!"; public static final SparseIntArray ORIENTATIONS = new SparseIntArray(); - public static final String configName = "VideoRecordConfig.ini"; - public static final String logName = "VideoRecordLog.ini"; + public static final String configName = "BurnInTestConfig.ini"; + public static final String logName = "BurnInTestLog.ini"; + public static final String CONFIG_TITLE ="[BurnIn_Test_Config]"; + public static final String LOG_TITLE ="[BurnIn_Test_Log]"; public static final double sdData = 1; public static int isRun = 0, Success = 0, Fail = 0; + public static int wifiSuccess = 0, wifiFail = 0; + public static int btSuccess = 0, btFail = 0; public static String TAG = "VideoRecord"; public static String firstCamera = "0"; public static String secondCamera = "1"; @@ -61,7 +69,7 @@ public class Utils { public static String secondFile = ""; public static ArrayList firstFilePath, secondFilePath; public static ArrayList videoLogList = null; - public static int isFinish = 999, delayTime = 60000, isFrame = 0, isQuality = 0; + public static int isFinish = 999, delayTime = 60500, isFrame = 0, isQuality = 0; public static boolean isReady = false, isRecord = false, isError = false, isNew = true; public static boolean fCamera = true, sCamera = true, getSdCard = false; public static String errorMessage = ""; @@ -73,10 +81,6 @@ public class Utils { ORIENTATIONS.append(Surface.ROTATION_270, 180); } - public static int getFail() { - return Fail; - } - public static int getIsRun() { return isRun; } @@ -85,6 +89,26 @@ public static int getSuccess() { return Success; } + public static int getFail() { + return Fail; + } + + public static int getWifiSuccess() { + return wifiSuccess; + } + + public static int getWifiFail() { + return wifiFail; + } + + public static int getBtSuccess() { + return btSuccess; + } + + public static int getBtFail() { + return btFail; + } + public static int getReset() { return onReset; } diff --git a/app/src/main/java/com/askey/record/VideoRecordActivity.java b/app/src/main/java/com/askey/bit/VideoRecordActivity.java similarity index 89% rename from app/src/main/java/com/askey/record/VideoRecordActivity.java rename to app/src/main/java/com/askey/bit/VideoRecordActivity.java index 94d1dfc..60ce4a9 100644 --- a/app/src/main/java/com/askey/record/VideoRecordActivity.java +++ b/app/src/main/java/com/askey/bit/VideoRecordActivity.java @@ -1,10 +1,11 @@ -package com.askey.record; +package com.askey.bit; import android.Manifest; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Activity; import android.app.AlertDialog; +import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -20,6 +21,7 @@ import android.hardware.camera2.CaptureRequest; import android.media.CamcorderProfile; import android.media.MediaRecorder; +import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; @@ -54,64 +56,76 @@ import java.util.Timer; import java.util.TimerTask; -import static com.askey.record.Utils.DFRAME_RATE; -import static com.askey.record.Utils.EXTRA_VIDEO_COPY; -import static com.askey.record.Utils.EXTRA_VIDEO_FAIL; -import static com.askey.record.Utils.EXTRA_VIDEO_PASTE; -import static com.askey.record.Utils.EXTRA_VIDEO_RECORD; -import static com.askey.record.Utils.EXTRA_VIDEO_REFORMAT; -import static com.askey.record.Utils.EXTRA_VIDEO_REMOVE; -import static com.askey.record.Utils.EXTRA_VIDEO_RESET; -import static com.askey.record.Utils.EXTRA_VIDEO_RUN; -import static com.askey.record.Utils.EXTRA_VIDEO_SUCCESS; -import static com.askey.record.Utils.EXTRA_VIDEO_VERSION; -import static com.askey.record.Utils.FPS; -import static com.askey.record.Utils.FRAMESKIP; -import static com.askey.record.Utils.FRAME_RATE; -import static com.askey.record.Utils.NEW_DFRAME_RATE; -import static com.askey.record.Utils.NEW_FRAME_RATE; -import static com.askey.record.Utils.NO_SD_CARD; -import static com.askey.record.Utils.TAG; -import static com.askey.record.Utils.checkConfigFile; -import static com.askey.record.Utils.configName; -import static com.askey.record.Utils.delayTime; -import static com.askey.record.Utils.errorMessage; -import static com.askey.record.Utils.fCamera; -import static com.askey.record.Utils.Fail; -import static com.askey.record.Utils.firstCamera; -import static com.askey.record.Utils.firstFile; -import static com.askey.record.Utils.firstFilePath; -import static com.askey.record.Utils.getCalendarTime; -import static com.askey.record.Utils.getFail; -import static com.askey.record.Utils.getFrameRate; -import static com.askey.record.Utils.getIsRun; -import static com.askey.record.Utils.getPath; -import static com.askey.record.Utils.getReset; -import static com.askey.record.Utils.getSDPath; -import static com.askey.record.Utils.getSdCard; -import static com.askey.record.Utils.getSuccess; -import static com.askey.record.Utils.isError; -import static com.askey.record.Utils.isFinish; -import static com.askey.record.Utils.isFrame; -import static com.askey.record.Utils.isInteger; -import static com.askey.record.Utils.isNew; -import static com.askey.record.Utils.isQuality; -import static com.askey.record.Utils.isReady; -import static com.askey.record.Utils.isRecord; -import static com.askey.record.Utils.isRun; -import static com.askey.record.Utils.lastfirstCamera; -import static com.askey.record.Utils.lastsecondCamera; -import static com.askey.record.Utils.logName; -import static com.askey.record.Utils.readConfigFile; -import static com.askey.record.Utils.reformatConfigFile; -import static com.askey.record.Utils.sCamera; -import static com.askey.record.Utils.secondCamera; -import static com.askey.record.Utils.secondFile; -import static com.askey.record.Utils.secondFilePath; -import static com.askey.record.Utils.setConfigFile; -import static com.askey.record.Utils.Success; -import static com.askey.record.Utils.videoLogList; -import static com.askey.record.restartActivity.EXTRA_MAIN_PID; +import static com.askey.bit.Utils.DFRAME_RATE; +import static com.askey.bit.Utils.EXTRA_VIDEO_BT_FAIL; +import static com.askey.bit.Utils.EXTRA_VIDEO_BT_SUCCESS; +import static com.askey.bit.Utils.EXTRA_VIDEO_COPY; +import static com.askey.bit.Utils.EXTRA_VIDEO_FAIL; +import static com.askey.bit.Utils.EXTRA_VIDEO_PASTE; +import static com.askey.bit.Utils.EXTRA_VIDEO_RECORD; +import static com.askey.bit.Utils.EXTRA_VIDEO_REFORMAT; +import static com.askey.bit.Utils.EXTRA_VIDEO_REMOVE; +import static com.askey.bit.Utils.EXTRA_VIDEO_RESET; +import static com.askey.bit.Utils.EXTRA_VIDEO_RUN; +import static com.askey.bit.Utils.EXTRA_VIDEO_SUCCESS; +import static com.askey.bit.Utils.EXTRA_VIDEO_VERSION; +import static com.askey.bit.Utils.EXTRA_VIDEO_WIFI_FAIL; +import static com.askey.bit.Utils.EXTRA_VIDEO_WIFI_SUCCESS; +import static com.askey.bit.Utils.FPS; +import static com.askey.bit.Utils.FRAMESKIP; +import static com.askey.bit.Utils.FRAME_RATE; +import static com.askey.bit.Utils.NEW_DFRAME_RATE; +import static com.askey.bit.Utils.NEW_FRAME_RATE; +import static com.askey.bit.Utils.NO_SD_CARD; +import static com.askey.bit.Utils.TAG; +import static com.askey.bit.Utils.checkConfigFile; +import static com.askey.bit.Utils.configName; +import static com.askey.bit.Utils.delayTime; +import static com.askey.bit.Utils.errorMessage; +import static com.askey.bit.Utils.fCamera; +import static com.askey.bit.Utils.Fail; +import static com.askey.bit.Utils.wifiFail; +import static com.askey.bit.Utils.btFail; +import static com.askey.bit.Utils.firstCamera; +import static com.askey.bit.Utils.firstFile; +import static com.askey.bit.Utils.firstFilePath; +import static com.askey.bit.Utils.getCalendarTime; +import static com.askey.bit.Utils.getFail; +import static com.askey.bit.Utils.getWifiFail; +import static com.askey.bit.Utils.getBtFail; +import static com.askey.bit.Utils.getFrameRate; +import static com.askey.bit.Utils.getIsRun; +import static com.askey.bit.Utils.getPath; +import static com.askey.bit.Utils.getReset; +import static com.askey.bit.Utils.getSDPath; +import static com.askey.bit.Utils.getSdCard; +import static com.askey.bit.Utils.getSuccess; +import static com.askey.bit.Utils.getWifiSuccess; +import static com.askey.bit.Utils.getBtSuccess; +import static com.askey.bit.Utils.isError; +import static com.askey.bit.Utils.isFinish; +import static com.askey.bit.Utils.isFrame; +import static com.askey.bit.Utils.isInteger; +import static com.askey.bit.Utils.isNew; +import static com.askey.bit.Utils.isQuality; +import static com.askey.bit.Utils.isReady; +import static com.askey.bit.Utils.isRecord; +import static com.askey.bit.Utils.isRun; +import static com.askey.bit.Utils.lastfirstCamera; +import static com.askey.bit.Utils.lastsecondCamera; +import static com.askey.bit.Utils.logName; +import static com.askey.bit.Utils.readConfigFile; +import static com.askey.bit.Utils.reformatConfigFile; +import static com.askey.bit.Utils.sCamera; +import static com.askey.bit.Utils.secondCamera; +import static com.askey.bit.Utils.secondFile; +import static com.askey.bit.Utils.secondFilePath; +import static com.askey.bit.Utils.setConfigFile; +import static com.askey.bit.Utils.Success; +import static com.askey.bit.Utils.wifiSuccess; +import static com.askey.bit.Utils.btSuccess; +import static com.askey.bit.Utils.videoLogList; +import static com.askey.bit.restartActivity.EXTRA_MAIN_PID; public class VideoRecordActivity extends Activity { //TODO 使用SD Card儲存時 SD_Mode 設置為 true @@ -119,9 +133,12 @@ public class VideoRecordActivity extends Activity { //TODO 使用錯誤重啟時 autoRestart 設置為 true public static boolean autoRestart = true; public static boolean extraRecordStatus = false, onRestart = false; - public static int onRun = 0, onSuccess = 0, onFail = 0, onReset = 0; + public static int onRun = 0, onReset = 0, onSuccess = 0, onFail = 0; + public static int onWifiSuccess = 0, onWifiFail = 0, onBtSuccess = 0, onBtFail = 0; private static String codeDate0, codeDate1, resetDate; private Size mPreviewSize; + private WifiManager wifiManager; + private BluetoothAdapter mbtAdapter; private TextureView mTextureView0, mTextureView1; private CameraDevice mCameraDevice0, mCameraDevice1; private CameraCaptureSession mPreviewSession0, mPreviewSession1; @@ -185,11 +202,19 @@ private void setRecord() { isRun = onRun; Success = onSuccess; Fail = onFail; + wifiSuccess = onWifiSuccess; + wifiFail = onWifiFail; + btSuccess = onBtSuccess; + btFail = onBtFail; } else { onReset = 0; isRun = 0; Success = 0; Fail = 0; + wifiSuccess = 0; + wifiFail = 0; + btSuccess = 0; + btFail = 0; } extraRecordStatus = true; firstFilePath.clear(); @@ -228,7 +253,10 @@ private boolean checkPermission() { videoLogList.add(new LogMsg("#checkPermission", mLog.v)); int CAMERA = checkSelfPermission(Manifest.permission.CAMERA); int STORAGE = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE); - return permission(CAMERA) || permission(STORAGE); + int INTERNET = checkSelfPermission(Manifest.permission.INTERNET); + int BLUETOOTH = checkSelfPermission(Manifest.permission.BLUETOOTH); + + return permission(CAMERA) || permission(STORAGE) || permission(INTERNET) || permission(BLUETOOTH); } @TargetApi(23) @@ -299,7 +327,6 @@ protected void onCreate(Bundle savedInstanceState) { } } //*reflection invoke setStart(); - } } @@ -468,8 +495,12 @@ private void restartApp(String date, boolean record) { Intent intent = restartActivity.createIntent(context); intent.putExtra(EXTRA_VIDEO_RUN, onRun); intent.putExtra(EXTRA_VIDEO_FAIL, onFail); - intent.putExtra(EXTRA_VIDEO_RESET, onReset); intent.putExtra(EXTRA_VIDEO_SUCCESS, onSuccess); + intent.putExtra(EXTRA_VIDEO_WIFI_FAIL, onWifiFail); + intent.putExtra(EXTRA_VIDEO_WIFI_SUCCESS, onWifiSuccess); + intent.putExtra(EXTRA_VIDEO_BT_FAIL, onBtFail); + intent.putExtra(EXTRA_VIDEO_BT_SUCCESS, onBtSuccess); + intent.putExtra(EXTRA_VIDEO_RESET, onReset); intent.putExtra(EXTRA_VIDEO_RECORD, record); context.startActivity(intent); } @@ -477,6 +508,20 @@ private void restartApp(String date, boolean record) { @SuppressLint("HandlerLeak") private void initial() { + try { + wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); + } catch (Exception e) { + isError = true; + videoLogList.add(new LogMsg("wifiManager error.", mLog.e)); + errorMessage = "wifiManager error."; + } + try { + mbtAdapter = BluetoothAdapter.getDefaultAdapter(); + } catch (Exception e) { + isError = true; + videoLogList.add(new LogMsg("bluetoothAdapter error.", mLog.e)); + errorMessage = "bluetoothAdapter error."; + } getSdCard = !getSDPath().equals(""); ArrayList items_frame = new ArrayList(); ArrayList items_quality = new ArrayList(); @@ -514,22 +559,22 @@ private void initial() { backgroundHandler1 = new Handler(thread1.getLooper()); mainHandler = new Handler(getMainLooper()); recordHandler0 = new Handler() { - public void handleMessage(android.os.Message msg) { + public void handleMessage(Message msg) { startRecord(firstCamera); } }; recordHandler1 = new Handler() { - public void handleMessage(android.os.Message msg) { + public void handleMessage(Message msg) { startRecord(secondCamera); } }; stopRecordHandler0 = new Handler() { - public void handleMessage(android.os.Message msg) { + public void handleMessage(Message msg) { stopRecord(false, msg.obj.toString(), msg.arg1 + ""); } }; stopRecordHandler1 = new Handler() { - public void handleMessage(android.os.Message msg) { + public void handleMessage(Message msg) { stopRecord(false, msg.obj.toString(), msg.arg1 + ""); } }; @@ -543,7 +588,6 @@ public void handleMessage(android.os.Message msg) { mTextureView0.setSurfaceTextureListener(new mSurfaceTextureListener(firstCamera)); mTextureView1 = findViewById(R.id.surfaceView1); mTextureView1.setSurfaceTextureListener(new mSurfaceTextureListener(secondCamera)); - findViewById(R.id.cancel).setOnClickListener((View v) -> { videoLogList.add(new LogMsg("@cancel", mLog.v)); stopRecordAndSaveLog(true); @@ -589,12 +633,16 @@ public void handleMessage(android.os.Message msg) { onFail = getIntent().getIntExtra(EXTRA_VIDEO_FAIL, 0); onReset = getIntent().getIntExtra(EXTRA_VIDEO_RESET, 0); onSuccess = getIntent().getIntExtra(EXTRA_VIDEO_SUCCESS, 0); + onWifiFail = getIntent().getIntExtra(EXTRA_VIDEO_WIFI_FAIL, 0); + onWifiSuccess = getIntent().getIntExtra(EXTRA_VIDEO_WIFI_SUCCESS, 0); + onBtFail = getIntent().getIntExtra(EXTRA_VIDEO_BT_FAIL, 0); + onBtSuccess = getIntent().getIntExtra(EXTRA_VIDEO_BT_SUCCESS, 0); if (onReset != 0) videoLogList.add(new LogMsg("#noReset:" + onReset, mLog.v)); extraRecordStatus = getIntent().getBooleanExtra(EXTRA_VIDEO_RECORD, false); // show DEMO demoHandler = new Handler() { - public void handleMessage(android.os.Message msg) { + public void handleMessage(Message msg) { this.post(() -> checkSdCardFromFileList()); if (!extraRecordStatus) { this.post(() -> saveLog(getApplicationContext(), false, false)); @@ -1013,8 +1061,11 @@ private void fileCheck(String path) { } else { Fail++; } - videoLogList.add(new LogMsg("CheckFile: " + path.split("/")[3] + " frameRate:" + frameRate + - " success:" + getSuccess() + " fail:" + getFail() + " reset:" + getReset(), mLog.i)); + videoLogList.add(new LogMsg("CheckFile: " + path.split("/")[3] + + " video_frameRate:" + frameRate + " video_success:" + getSuccess() + " video_fail:" + getFail() + + " wifi_success:" + getWifiSuccess() + " wifi_fail:" + getWifiFail() + + " bt_success:" + getBtSuccess() + " bt_fail:" + getBtFail() + + " reset:" + getReset(), mLog.i)); new Handler().post(() -> saveLog(getApplicationContext(), false, false)); } catch (Exception e) { e.printStackTrace(); @@ -1038,19 +1089,26 @@ private void startRecord(String cameraId) { if (!isError) { Log.d(TAG, "startRecord"); try { - if (isCameraOne(cameraId)) + if (isCameraOne(cameraId)) { + wifiEnableOrDisable(); codeDate0 = getCalendarTime(); - else + } else { + btEnableOrDisable(); codeDate1 = getCalendarTime(); + } if (isCameraOne(cameraId)) { checkSdCardFromFileList(); runOnUiThread(() -> { if (mTimer == null) { isRun++; - onFail = getFail(); onRun = getIsRun(); + onFail = getFail(); onSuccess = getSuccess(); + onWifiFail = getWifiFail(); + onWifiSuccess = getWifiSuccess(); + onBtFail = getBtFail(); + onBtSuccess = getBtSuccess(); //タイマーの初期化処理 timerTask = new mTimerTask(); mLaptime = 0.0f; @@ -1511,4 +1569,44 @@ public void onPageScrollStateChanged(int state) { } } + + private void wifiEnableOrDisable() { + if (wifiManager != null) { + try { + if (WifiManager.WIFI_STATE_ENABLED != wifiManager.getWifiState()) { + wifiManager.setWifiEnabled(true); + } else { + wifiManager.setWifiEnabled(false); + } + wifiSuccess++; + } catch (Exception e) { + e.printStackTrace(); + wifiFail++; + videoLogList.add(new LogMsg("Error wifiEnableOrDisable fail.")); + } + } else { + wifiFail++; + videoLogList.add(new LogMsg("Error wifiEnableOrDisable fail.")); + } + } + + private void btEnableOrDisable() { + if (mbtAdapter != null) { + try { + if (!mbtAdapter.isEnabled()) { + mbtAdapter.enable(); + } else { + mbtAdapter.disable(); + } + btSuccess++; + } catch (Exception e) { + e.printStackTrace(); + btFail++; + videoLogList.add(new LogMsg("Error btEnableOrDisable fail.")); + } + } else { + btFail++; + videoLogList.add(new LogMsg("Error btEnableOrDisable fail.")); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/askey/record/checkSdCardService.java b/app/src/main/java/com/askey/bit/checkSdCardService.java similarity index 90% rename from app/src/main/java/com/askey/record/checkSdCardService.java rename to app/src/main/java/com/askey/bit/checkSdCardService.java index 007521a..63611ed 100644 --- a/app/src/main/java/com/askey/record/checkSdCardService.java +++ b/app/src/main/java/com/askey/bit/checkSdCardService.java @@ -1,4 +1,4 @@ -package com.askey.record; +package com.askey.bit; import android.app.IntentService; @@ -13,17 +13,17 @@ import java.util.ArrayList; import java.util.Arrays; -import static com.askey.record.Utils.EXTRA_VIDEO_REFORMAT; -import static com.askey.record.Utils.EXTRA_VIDEO_VERSION; -import static com.askey.record.Utils.NO_SD_CARD; -import static com.askey.record.Utils.errorMessage; -import static com.askey.record.Utils.firstFile; -import static com.askey.record.Utils.getSDPath; -import static com.askey.record.Utils.getSdCard; -import static com.askey.record.Utils.isError; -import static com.askey.record.Utils.sdData; -import static com.askey.record.Utils.secondFile; -import static com.askey.record.Utils.videoLogList; +import static com.askey.bit.Utils.EXTRA_VIDEO_REFORMAT; +import static com.askey.bit.Utils.EXTRA_VIDEO_VERSION; +import static com.askey.bit.Utils.NO_SD_CARD; +import static com.askey.bit.Utils.errorMessage; +import static com.askey.bit.Utils.firstFile; +import static com.askey.bit.Utils.getSDPath; +import static com.askey.bit.Utils.getSdCard; +import static com.askey.bit.Utils.isError; +import static com.askey.bit.Utils.sdData; +import static com.askey.bit.Utils.secondFile; +import static com.askey.bit.Utils.videoLogList; public class checkSdCardService extends IntentService { diff --git a/app/src/main/java/com/askey/record/copyFileService.java b/app/src/main/java/com/askey/bit/copyFileService.java similarity index 90% rename from app/src/main/java/com/askey/record/copyFileService.java rename to app/src/main/java/com/askey/bit/copyFileService.java index b025858..72c9122 100644 --- a/app/src/main/java/com/askey/record/copyFileService.java +++ b/app/src/main/java/com/askey/bit/copyFileService.java @@ -1,4 +1,4 @@ -package com.askey.record; +package com.askey.bit; import android.app.IntentService; import android.content.Intent; @@ -14,13 +14,13 @@ import java.io.InputStream; import java.io.OutputStream; -import static com.askey.record.Utils.EXTRA_VIDEO_COPY; -import static com.askey.record.Utils.EXTRA_VIDEO_PASTE; -import static com.askey.record.Utils.EXTRA_VIDEO_REMOVE; -import static com.askey.record.Utils.errorMessage; -import static com.askey.record.Utils.getSDPath; -import static com.askey.record.Utils.isError; -import static com.askey.record.Utils.videoLogList; +import static com.askey.bit.Utils.EXTRA_VIDEO_COPY; +import static com.askey.bit.Utils.EXTRA_VIDEO_PASTE; +import static com.askey.bit.Utils.EXTRA_VIDEO_REMOVE; +import static com.askey.bit.Utils.errorMessage; +import static com.askey.bit.Utils.getSDPath; +import static com.askey.bit.Utils.isError; +import static com.askey.bit.Utils.videoLogList; public class copyFileService extends IntentService { String video; diff --git a/app/src/main/java/com/askey/record/restartActivity.java b/app/src/main/java/com/askey/bit/restartActivity.java similarity index 71% rename from app/src/main/java/com/askey/record/restartActivity.java rename to app/src/main/java/com/askey/bit/restartActivity.java index 5b8c41d..7b29c21 100644 --- a/app/src/main/java/com/askey/record/restartActivity.java +++ b/app/src/main/java/com/askey/bit/restartActivity.java @@ -1,4 +1,4 @@ -package com.askey.record; +package com.askey.bit; import android.app.Activity; import android.content.Context; @@ -12,6 +12,10 @@ public class restartActivity extends Activity { public static final String EXTRA_VIDEO_RESET = "RestartActivity.reset"; public static final String EXTRA_VIDEO_RECORD = "RestartActivity.record"; public static final String EXTRA_VIDEO_SUCCESS = "RestartActivity.success"; + public static final String EXTRA_VIDEO_WIFI_FAIL = "RestartActivity.wifi.fail"; + public static final String EXTRA_VIDEO_BT_FAIL = "RestartActivity.bt.fail"; + public static final String EXTRA_VIDEO_WIFI_SUCCESS = "RestartActivity.wifi.success"; + public static final String EXTRA_VIDEO_BT_SUCCESS = "RestartActivity.bt.success"; public static Intent createIntent(Context context) { Intent intent = new Intent(); @@ -32,6 +36,10 @@ public void onCreate(Bundle savedInstanceState) { int EXTRA_RESET = intent.getIntExtra(EXTRA_VIDEO_RESET, 0); int EXTRA_FAIL = getIntent().getIntExtra(EXTRA_VIDEO_FAIL, 0); int EXTRA_SUCCESS = getIntent().getIntExtra(EXTRA_VIDEO_SUCCESS, 0); + int EXTRA_WIFI_FAIL = getIntent().getIntExtra(EXTRA_VIDEO_WIFI_FAIL, 0); + int EXTRA_WIFI_SUCCESS = getIntent().getIntExtra(EXTRA_VIDEO_WIFI_SUCCESS, 0); + int EXTRA_BT_FAIL = getIntent().getIntExtra(EXTRA_VIDEO_BT_FAIL, 0); + int EXTRA_BT_SUCCESS = getIntent().getIntExtra(EXTRA_VIDEO_BT_SUCCESS, 0); boolean EXTRA_RECORD = intent.getBooleanExtra(EXTRA_VIDEO_RECORD, false); android.os.Process.killProcess(mainPid); // 2. MainActivity を再起動する @@ -43,6 +51,10 @@ public void onCreate(Bundle savedInstanceState) { restartIntent.putExtra(EXTRA_VIDEO_RESET, EXTRA_RESET); restartIntent.putExtra(EXTRA_VIDEO_FAIL, EXTRA_FAIL); restartIntent.putExtra(EXTRA_VIDEO_SUCCESS, EXTRA_SUCCESS); + restartIntent.putExtra(EXTRA_VIDEO_WIFI_FAIL, EXTRA_WIFI_FAIL); + restartIntent.putExtra(EXTRA_VIDEO_WIFI_SUCCESS, EXTRA_WIFI_SUCCESS); + restartIntent.putExtra(EXTRA_VIDEO_BT_FAIL, EXTRA_BT_FAIL); + restartIntent.putExtra(EXTRA_VIDEO_BT_SUCCESS, EXTRA_BT_SUCCESS); restartIntent.putExtra(EXTRA_VIDEO_RECORD, EXTRA_RECORD); context.startActivity(restartIntent); // 3. RestartActivity を終了する diff --git a/app/src/main/java/com/askey/record/saveLogService.java b/app/src/main/java/com/askey/bit/saveLogService.java similarity index 82% rename from app/src/main/java/com/askey/record/saveLogService.java rename to app/src/main/java/com/askey/bit/saveLogService.java index fafcc85..e762441 100644 --- a/app/src/main/java/com/askey/record/saveLogService.java +++ b/app/src/main/java/com/askey/bit/saveLogService.java @@ -1,5 +1,4 @@ -package com.askey.record; - +package com.askey.bit; import android.app.IntentService; import android.content.Context; @@ -13,17 +12,18 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import static com.askey.record.Utils.EXTRA_VIDEO_COPY; -import static com.askey.record.Utils.EXTRA_VIDEO_PASTE; -import static com.askey.record.Utils.EXTRA_VIDEO_REFORMAT; -import static com.askey.record.Utils.EXTRA_VIDEO_REMOVE; -import static com.askey.record.Utils.EXTRA_VIDEO_VERSION; -import static com.askey.record.Utils.getPath; -import static com.askey.record.Utils.getSDPath; -import static com.askey.record.Utils.logName; -import static com.askey.record.Utils.videoLogList; -import static com.askey.record.VideoRecordActivity.SD_Mode; -import static com.askey.record.restartActivity.EXTRA_MAIN_PID; +import static com.askey.bit.Utils.EXTRA_VIDEO_COPY; +import static com.askey.bit.Utils.EXTRA_VIDEO_PASTE; +import static com.askey.bit.Utils.EXTRA_VIDEO_REFORMAT; +import static com.askey.bit.Utils.EXTRA_VIDEO_REMOVE; +import static com.askey.bit.Utils.EXTRA_VIDEO_VERSION; +import static com.askey.bit.Utils.LOG_TITLE; +import static com.askey.bit.Utils.getPath; +import static com.askey.bit.Utils.getSDPath; +import static com.askey.bit.Utils.logName; +import static com.askey.bit.Utils.videoLogList; +import static com.askey.bit.VideoRecordActivity.SD_Mode; +import static com.askey.bit.restartActivity.EXTRA_MAIN_PID; public class saveLogService extends IntentService { private String version; @@ -39,7 +39,7 @@ private void saveLog(ArrayList mLogList, boolean reFormat, boolean move) File file = new File(getPath(), logName); if (!file.exists()) { - logString = "[VIDEO_RECORD_LOG]" + version + "\r\n"; + logString = LOG_TITLE + version + "\r\n"; try { file.createNewFile(); mLogList.add(new LogMsg("Create the log file.", mLog.w)); @@ -64,7 +64,7 @@ private void saveLog(ArrayList mLogList, boolean reFormat, boolean move) } catch (Exception e) { e.printStackTrace(); } - if(SD_Mode) { + if (SD_Mode) { if (move) try { Thread tMove = new Thread(() -> { diff --git a/app/src/main/java/com/askey/record/Configini.java b/app/src/main/java/com/askey/record/Configini.java deleted file mode 100644 index 3333ce6..0000000 --- a/app/src/main/java/com/askey/record/Configini.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.askey.record; - -import android.content.Context; - -public class Configini { - - protected Context context; - protected String firstCamera = "0"; - protected String secondCamera = "1"; - protected int numberOfRuns = 999; - protected boolean isNew = true; - - public Configini(Context context) { - this.context = context; - } - - public Configini(Context context, String firstCamera, String secondCamera, int isRuns, boolean isNew) { - this.context = context; - this.firstCamera = firstCamera; - this.secondCamera = secondCamera; - this.numberOfRuns = isRuns; - this.isNew = isNew; - } - - protected String[] config() { - return new String[]{ - "[VIDEO_RECORD_CONFIG]" + context.getString(R.string.app_name) + "\r\n", - "#CameraID (0:Outer, 1:Inner, 2:External)\r\n", - "firstCameraID = " + firstCamera + "\r\n", - "secondCameraID = " + secondCamera + "\r\n", "\r\n", - "#Total number of runs (1 record is 1 min)\r\n", - "numberOfRuns = " + numberOfRuns + "\r\n", "\r\n", - "#Set Property\r\n", - "setProperty = " + isNew + "\r\n", "\r\n", - "#Video path\r\n", - "video1_path = /sdcard/(ddhhmmss)f.mp4\r\n", - "video2_path = /sdcard/(ddhhmmss)s.mp4\r\n", "\r\n", - "#Start\r\n", - "adb shell am start -n com.askey.record/.VideoRecordActivity\r\n", "\r\n", - "#Start test record(no audio, 5s)\r\n", - "adb shell am broadcast -a com.askey.record.t\r\n", "\r\n", - "#Start/Stop record\r\n", - "adb shell am broadcast -a com.askey.record.s\r\n", "\r\n", - "#Finish\r\n", - "adb shell am broadcast -a com.askey.record.f\r\n", "\r\n", - "#At the recording video, please don't copy the sd card file.\r\n", - "#At least 3.5Gb memory needs to be available to record.\r\n", - "#Sometimes need reboot device to wake up the External camera.\r\n", - "#Inner and External can't be used at the same time.\r\n", - "\r\n" - }; - } -} diff --git a/app/src/main/java/com/askey/widget/CustomPageTransformer.java b/app/src/main/java/com/askey/widget/CustomPageTransformer.java index 0924686..d6cf452 100644 --- a/app/src/main/java/com/askey/widget/CustomPageTransformer.java +++ b/app/src/main/java/com/askey/widget/CustomPageTransformer.java @@ -2,7 +2,7 @@ import android.view.View; -import com.askey.record.R; +import com.askey.bit.R; public class CustomPageTransformer implements VerticalViewPager.PageTransformer { @Override diff --git a/app/src/main/java/com/askey/widget/CustomTextView.java b/app/src/main/java/com/askey/widget/CustomTextView.java old mode 100755 new mode 100644 index e6bee87..f3950eb --- a/app/src/main/java/com/askey/widget/CustomTextView.java +++ b/app/src/main/java/com/askey/widget/CustomTextView.java @@ -7,7 +7,7 @@ import android.util.AttributeSet; import android.widget.TextView; -import com.askey.record.R; +import com.askey.bit.R; @SuppressLint("AppCompatCustomView") public class CustomTextView extends TextView { diff --git a/app/src/main/java/com/askey/widget/LogMsg.java b/app/src/main/java/com/askey/widget/LogMsg.java index 6450693..ec544c9 100644 --- a/app/src/main/java/com/askey/widget/LogMsg.java +++ b/app/src/main/java/com/askey/widget/LogMsg.java @@ -1,6 +1,6 @@ package com.askey.widget; -import com.askey.record.Utils; +import com.askey.bit.Utils; import java.time.LocalDateTime; diff --git a/app/src/main/java/com/askey/widget/PropertyUtils.java b/app/src/main/java/com/askey/widget/PropertyUtils.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/askey/widget/VerticalPageTransformer.java b/app/src/main/java/com/askey/widget/VerticalPageTransformer.java old mode 100755 new mode 100644 index 3dfca6e..047d5cc --- a/app/src/main/java/com/askey/widget/VerticalPageTransformer.java +++ b/app/src/main/java/com/askey/widget/VerticalPageTransformer.java @@ -2,7 +2,7 @@ import android.view.View; -import com.askey.record.R; +import com.askey.bit.R; public class VerticalPageTransformer implements VerticalViewPager.PageTransformer { @Override diff --git a/app/src/main/java/com/askey/widget/VerticalPagerContainer.java b/app/src/main/java/com/askey/widget/VerticalPagerContainer.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/askey/widget/VerticalViewPager.java b/app/src/main/java/com/askey/widget/VerticalViewPager.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/askey/widget/mLogListAdapter.java b/app/src/main/java/com/askey/widget/mLogListAdapter.java index ed6631b..1680455 100644 --- a/app/src/main/java/com/askey/widget/mLogListAdapter.java +++ b/app/src/main/java/com/askey/widget/mLogListAdapter.java @@ -7,7 +7,7 @@ import android.view.ViewGroup; import android.widget.BaseAdapter; -import com.askey.record.R; +import com.askey.bit.R; import java.time.format.DateTimeFormatter; import java.util.ArrayList; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7fe8ee2..58ea2df 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,4 @@ - VideoRecordActivity - CDR9020_QTR(v1.7.6) + CDR9020_BIT(v1.0.0) From 88bcd2f3b143d62e655c5d59ec6691562d2aaf8a Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 11 May 2020 16:46:28 +0800 Subject: [PATCH 02/36] [CDR9020_BIT_v1.0.0] 1.add wifi and bt on/off at runtime. --- app/src/main/java/com/askey/bit/Configini.java | 2 +- app/src/main/java/com/askey/bit/VideoRecordActivity.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/askey/bit/Configini.java b/app/src/main/java/com/askey/bit/Configini.java index f296dc5..cdd22f7 100644 --- a/app/src/main/java/com/askey/bit/Configini.java +++ b/app/src/main/java/com/askey/bit/Configini.java @@ -11,7 +11,7 @@ public class Configini { protected Context context; protected String firstCamera = "0"; protected String secondCamera = "1"; - protected int numberOfRuns = 999; + protected int numberOfRuns = 480; protected boolean isNew = true; public Configini(Context context) { diff --git a/app/src/main/java/com/askey/bit/VideoRecordActivity.java b/app/src/main/java/com/askey/bit/VideoRecordActivity.java index 60ce4a9..9292b22 100644 --- a/app/src/main/java/com/askey/bit/VideoRecordActivity.java +++ b/app/src/main/java/com/askey/bit/VideoRecordActivity.java @@ -1091,9 +1091,9 @@ private void startRecord(String cameraId) { try { if (isCameraOne(cameraId)) { wifiEnableOrDisable(); + btEnableOrDisable(); codeDate0 = getCalendarTime(); } else { - btEnableOrDisable(); codeDate1 = getCalendarTime(); } @@ -1184,7 +1184,7 @@ public void onConfigured(CameraCaptureSession session) { Message msg = stopRecordHandler1.obtainMessage(); msg.arg1 = Integer.parseInt(cameraId); msg.obj = getCodeDate(cameraId); - stopRecordHandler1.sendMessageDelayed(msg, delayTime); + stopRecordHandler1.sendMessageDelayed(msg, delayTime + 500); if (mMediaRecorder1 != null) mMediaRecorder1.start(); } From 94655f7eec79b193461bed4d5ec32fa5a0c5834b Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 11 May 2020 17:04:59 +0800 Subject: [PATCH 03/36] [CDR9020_BIT_v1.0.0] 1.add wifi and bt on/off at runtime. --- app/src/main/java/com/askey/bit/Utils.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/askey/bit/Utils.java b/app/src/main/java/com/askey/bit/Utils.java index f4be58c..71012da 100644 --- a/app/src/main/java/com/askey/bit/Utils.java +++ b/app/src/main/java/com/askey/bit/Utils.java @@ -54,8 +54,8 @@ public class Utils { public static final SparseIntArray ORIENTATIONS = new SparseIntArray(); public static final String configName = "BurnInTestConfig.ini"; public static final String logName = "BurnInTestLog.ini"; - public static final String CONFIG_TITLE ="[BurnIn_Test_Config]"; - public static final String LOG_TITLE ="[BurnIn_Test_Log]"; + public static final String CONFIG_TITLE = "[BurnIn_Test_Config]"; + public static final String LOG_TITLE = "[BurnIn_Test_Log]"; public static final double sdData = 1; public static int isRun = 0, Success = 0, Fail = 0; public static int wifiSuccess = 0, wifiFail = 0; @@ -279,7 +279,7 @@ public static boolean[] checkConfigFile(Context context, File file, boolean firs } } if (update) { - String logString = "[VIDEO_RECORD_LOG]" + context.getString(R.string.app_name) + "\r\n"; + String logString = LOG_TITLE + context.getString(R.string.app_name) + "\r\n"; videoLogList.add(new LogMsg("Reformat the Log file.", mLog.e)); for (LogMsg logs : videoLogList) { String time = logs.time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) @@ -474,7 +474,7 @@ public static String getPath() { public static String getSDPath() { String path = ""; - if(SD_Mode) { + if (SD_Mode) { try { long start = System.currentTimeMillis(); long end = start + 10000; @@ -495,7 +495,7 @@ public static String getSDPath() { } catch (Exception e) { e.printStackTrace(); } - }else{ + } else { path = getPath(); } return path; From 443d4b701d6db2c44785a5ebcacf7f7ca2e1b35c Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 11 May 2020 17:11:02 +0800 Subject: [PATCH 04/36] [CDR9020_BIT_v1.0.0] 1.add wifi and bt on/off at runtime. --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ed5d389..67ceee2 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { } compileSdkVersion 28 defaultConfig { - applicationId "com.askey.record" + applicationId "com.askey.bit" minSdkVersion 27 //noinspection OldTargetApi targetSdkVersion 27 From d22abe356de4d6f42a7f811bba8edb6beb2691ea Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 8 Jun 2020 18:45:31 +0800 Subject: [PATCH 05/36] [CDR9020_BIT_v1.0.0] 1.add wifi and bt on/off at runtime. 2.set defaultProp = false, defaultRun = 480(8h) 3.disable video fps and quality setting --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 18 +- .../askey/bit/{Configini.java => Config.java} | 18 +- app/src/main/java/com/askey/bit/Utils.java | 186 +++++-------- .../com/askey/bit/VideoRecordActivity.java | 246 +++--------------- .../java/com/askey/bit/checkFileService.java | 138 ++++++++++ .../java/com/askey/bit/saveLogService.java | 2 +- app/src/main/res/drawable/ic_video.xml | 9 + .../main/res/layout/activity_video_record.xml | 45 ---- app/src/main/res/values/strings.xml | 7 + 10 files changed, 277 insertions(+), 394 deletions(-) rename app/src/main/java/com/askey/bit/{Configini.java => Config.java} (82%) create mode 100644 app/src/main/java/com/askey/bit/checkFileService.java create mode 100644 app/src/main/res/drawable/ic_video.xml diff --git a/app/build.gradle b/app/build.gradle index 67ceee2..dd3ef10 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { minSdkVersion 27 //noinspection OldTargetApi targetSdkVersion 27 - versionCode 2 + versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" signingConfig signingConfigs.debug diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e60ddcc..b0d46b5 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,14 +24,14 @@ @@ -40,14 +40,16 @@ - - - + android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + + + + + diff --git a/app/src/main/java/com/askey/bit/Configini.java b/app/src/main/java/com/askey/bit/Config.java similarity index 82% rename from app/src/main/java/com/askey/bit/Configini.java rename to app/src/main/java/com/askey/bit/Config.java index cdd22f7..2919a32 100644 --- a/app/src/main/java/com/askey/bit/Configini.java +++ b/app/src/main/java/com/askey/bit/Config.java @@ -4,38 +4,40 @@ import static com.askey.bit.Utils.CONFIG_TITLE; import static com.askey.bit.Utils.configName; +import static com.askey.bit.Utils.defaultProp; +import static com.askey.bit.Utils.defaultRun; import static com.askey.bit.Utils.logName; -public class Configini { +public class Config { protected Context context; protected String firstCamera = "0"; protected String secondCamera = "1"; - protected int numberOfRuns = 480; - protected boolean isNew = true; + protected int numberOfRuns = defaultRun; + protected boolean New = defaultProp; - public Configini(Context context) { + public Config(Context context) { this.context = context; } - public Configini(Context context, String firstCamera, String secondCamera, int isRuns, boolean isNew) { + public Config(Context context, String firstCamera, String secondCamera, int isRuns, boolean isNew) { this.context = context; this.firstCamera = firstCamera; this.secondCamera = secondCamera; this.numberOfRuns = isRuns; - this.isNew = isNew; + this.New = isNew; } protected String[] config() { return new String[]{ - CONFIG_TITLE + context.getString(R.string.app_name) + "\r\n", + CONFIG_TITLE+ context.getString(R.string.app_name) + "\r\n", "#CameraID (0:Outer, 1:Inner, 2:External)\r\n", "firstCameraID = " + firstCamera + "\r\n", "secondCameraID = " + secondCamera + "\r\n", "\r\n", "#Total number of runs (1 record is 1 min)\r\n", "numberOfRuns = " + numberOfRuns + "\r\n", "\r\n", "#Set Property\r\n", - "setProperty = " + isNew + "\r\n", "\r\n", + "setProperty = " + New + "\r\n", "\r\n", "#Video path\r\n", "first camera = /sdcard/v(yyMMddHHmmss)f.mp4\r\n", "second camera = /sdcard/v(yyMMddHHmmss)s.mp4\r\n", "\r\n", diff --git a/app/src/main/java/com/askey/bit/Utils.java b/app/src/main/java/com/askey/bit/Utils.java index 71012da..d4b424e 100644 --- a/app/src/main/java/com/askey/bit/Utils.java +++ b/app/src/main/java/com/askey/bit/Utils.java @@ -2,14 +2,11 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.media.MediaExtractor; -import android.media.MediaFormat; import android.os.Handler; import android.util.SparseIntArray; import android.view.Surface; import android.view.View; import android.widget.EditText; -import android.widget.TextView; import com.askey.widget.LogMsg; import com.askey.widget.mLog; @@ -19,7 +16,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; -import java.io.IOException; import java.io.InputStreamReader; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -30,6 +26,10 @@ import static com.askey.bit.VideoRecordActivity.saveLog; public class Utils { + //------------------------------------------------------------------------------- + public static final boolean defaultProp = false; + public static final int defaultRun = 480; + //------------------------------------------------------------------------------- public static final double[] DFRAME_RATE = {16, 27.5}, NEW_DFRAME_RATE = {14, 28}; public static final String[] FRAME_RATE = {"16fps", "27.5fps"}, @@ -46,6 +46,7 @@ public class Utils { public static final String EXTRA_VIDEO_WIFI_SUCCESS = "RestartActivity.wifi.success"; public static final String EXTRA_VIDEO_BT_SUCCESS = "RestartActivity.bt.success"; public static final String EXTRA_VIDEO_COPY = "RestartActivity.copy"; + public static final String EXTRA_VIDEO_PATH = "RestartActivity.path"; public static final String EXTRA_VIDEO_PASTE = "RestartActivity.paste"; public static final String EXTRA_VIDEO_REMOVE = "RestartActivity.remove"; public static final String EXTRA_VIDEO_VERSION = "RestartActivity.version"; @@ -70,7 +71,7 @@ public class Utils { public static ArrayList firstFilePath, secondFilePath; public static ArrayList videoLogList = null; public static int isFinish = 999, delayTime = 60500, isFrame = 0, isQuality = 0; - public static boolean isReady = false, isRecord = false, isError = false, isNew = true; + public static boolean isReady = false, isRecord = false, isError = false, isNew = defaultProp; public static boolean fCamera = true, sCamera = true, getSdCard = false; public static String errorMessage = ""; @@ -81,6 +82,41 @@ public class Utils { ORIENTATIONS.append(Surface.ROTATION_270, 180); } + //TODO Default Path + public static String getPath() { + String path = "/storage/emulated/0/DCIM/"; + return path; + } + + public static String getSDPath() { + String path = ""; + if (SD_Mode) { + try { + long start = System.currentTimeMillis(); + long end = start + 10000; + Runtime run = Runtime.getRuntime(); + String cmd = "ls /storage"; + Process pr = run.exec(cmd); + BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream())); + String line; + while ((line = buf.readLine()) != null) { + if (!line.equals("self") && !line.equals("emulated") && !line.equals("enterprise") && !line.contains("sdcard")) { + path = "/storage/" + line + "/"; + break; + } + if (System.currentTimeMillis() > end) { + break; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } else { + path = getPath(); + } + return path; + } + public static int getIsRun() { return isRun; } @@ -127,26 +163,21 @@ public static boolean isInteger(String s, boolean zero) { public static boolean isBoolean(String s) { try { - if (Boolean.parseBoolean(s)) { - return true; - } + Boolean.valueOf(s); + return true; } catch (Exception e) { e.printStackTrace(); return false; } - return true; } - public static void setTestTime(Context context, int min) { - if (min > 0) { - isFinish = min; - if (min != 999) - videoLogList.add(new LogMsg("setRecord time: " + min + " min.", mLog.d)); - else - videoLogList.add(new LogMsg("setRecord time: unlimited times.", mLog.d)); - } else { - videoLogList.add(new LogMsg("The test time must be a positive number.", mLog.e)); + public static void setTestTime(int min) { + if (min == 999) + videoLogList.add(new LogMsg("setRecord time: unlimited times.", mLog.d)); + else { + videoLogList.add(new LogMsg("setRecord time: " + min + " min.", mLog.d)); } + isFinish = min; } public static void checkConfigFile(Context context, boolean first) { @@ -161,7 +192,7 @@ public static void checkConfigFile(Context context, boolean first) { e.printStackTrace(); } videoLogList.add(new LogMsg("Create the config file.", mLog.w)); - writeConfigFile(context, file, new Configini(context).config()); + writeConfigFile(context, file, new Config(context).config()); } else { if (!isReady) { videoLogList.add(new LogMsg("Find the config file.", mLog.d)); @@ -190,11 +221,11 @@ public static boolean[] checkConfigFile(Context context, File file, boolean firs if (input.length() > 0) { String[] read = input.split("\r\n"); int target = 0, t; - String title = "[VIDEO_RECORD_CONFIG]"; + String title = CONFIG_TITLE; String first = "firstCameraID = ", second = "secondCameraID = "; String code = "numberOfRuns = ", prop = "setProperty = "; for (String s : read) - if (s.indexOf(title) != -1) { + if (s.contains(title)) { target++; t = s.indexOf(title) + title.length(); title = s.substring(t); @@ -261,17 +292,22 @@ public static boolean[] checkConfigFile(Context context, File file, boolean firs } if (isInteger(code.split("\n")[0], true)) { int min = Integer.parseInt(code.split("\n")[0]); - setTestTime(context, min); + if (min <= 0) { + videoLogList.add(new LogMsg("The test time must be a positive number.", mLog.e)); + reformat = true; + } else { + setTestTime(min); + } } else { videoLogList.add(new LogMsg("Unknown Record Times.", mLog.e)); reformat = true; } if (isBoolean(prop)) { - if (Boolean.parseBoolean(prop)) { - if (isNew != Boolean.parseBoolean(prop)) - isPropChange = true; - isNew = Boolean.parseBoolean(prop); - } + boolean getProp = Boolean.valueOf(prop); + if (isNew != getProp) + isPropChange = true; + isNew = getProp; + } else { videoLogList.add(new LogMsg("Unknown setProperty.", mLog.e)); reformat = true; @@ -361,33 +397,26 @@ public static void setConfigFile(Context context, File file, View view, boolean EditText editText_1 = view.findViewById(R.id.dialog_editText_1); EditText editText_2 = view.findViewById(R.id.dialog_editText_2); EditText editText_3 = view.findViewById(R.id.dialog_editText_3); - TextView editText_4 = view.findViewById(R.id.dialog_editText_4); - int isFinish = 999; - boolean isNew = true; + int isFinish = defaultRun; if (!reset) { if (isInteger(editText_3.getText().toString(), false)) { isFinish = Integer.parseInt(editText_3.getText().toString()); } else { - isFinish = 999; - } - if (isBoolean(editText_4.getText().toString())) { - isNew = Boolean.parseBoolean(editText_4.getText().toString()); - } else { - isNew = true; + isFinish = defaultRun; } } //toast(context, "Ready to write.", mLog.w); writeConfigFile(context, file, ( - !reset ? new Configini(context, editText_1.getText().toString(), - editText_2.getText().toString(), isFinish, isNew) : new Configini(context)).config()); + !reset ? new Config(context, editText_1.getText().toString(), + editText_2.getText().toString(), isFinish, isNew) : new Config(context)).config()); //toast(context, "Write file is completed.", mLog.i); } public static void reformatConfigFile(Context context, File file) { //toast(context, "Config file error.", mLog.e); - writeConfigFile(context, file, new Configini(context).config()); + writeConfigFile(context, file, new Config(context).config()); videoLogList.add(new LogMsg("Reformat the Config file.", mLog.e)); } @@ -467,85 +496,6 @@ public static String getCalendarTime(boolean isCameraOne) { return "v" + y + m + d + h + i + s + (isCameraOne ? "f" : "s"); } - public static String getPath() { - String path = "/storage/emulated/0/DCIM/"; - return path; - } - - public static String getSDPath() { - String path = ""; - if (SD_Mode) { - try { - long start = System.currentTimeMillis(); - long end = start + 10000; - Runtime run = Runtime.getRuntime(); - String cmd = "ls /storage"; - Process pr = run.exec(cmd); - BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream())); - String line; - while ((line = buf.readLine()) != null) { - if (!line.equals("self") && !line.equals("emulated") && !line.equals("enterprise") && !line.contains("sdcard")) { - path = "/storage/" + line + "/"; - break; - } - if (System.currentTimeMillis() > end) { - break; - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } else { - path = getPath(); - } - return path; - } - - public static int getFrameRate(String path) { - int frameRate = 0; - if (!getSDPath().equals("")) { - try { - MediaExtractor extractor = null; - FileInputStream fis = null; - try { - extractor = new MediaExtractor(); - fis = new FileInputStream(new File(path)); - extractor.setDataSource(fis.getFD()); - } catch (IOException e) { - e.printStackTrace(); - isError = true; - getSdCard = !getSDPath().equals(""); - errorMessage = "getFrameRate failed.<============ Crash here"; - videoLogList.add(new LogMsg("getFrameRate failed.", mLog.e)); - return 0; - } - int numTracks = extractor.getTrackCount(); - for (int i = 0; i < numTracks; i++) { - MediaFormat format = extractor.getTrackFormat(i); - if (format.containsKey(MediaFormat.KEY_FRAME_RATE)) { - frameRate = format.getInteger(MediaFormat.KEY_FRAME_RATE); - } - } - if (extractor != null) - extractor.release(); - if (fis != null) - fis.close(); - } catch (Exception e) { - e.printStackTrace(); - isError = true; - getSdCard = !getSDPath().equals(""); - errorMessage = "getFrameRate failed.<============ Crash here"; - videoLogList.add(new LogMsg("getFrameRate failed.", mLog.e)); - } - } else { - isError = true; - getSdCard = !getSDPath().equals(""); - errorMessage = "getFrameRate failed." + NO_SD_CARD + "<============ Crash here"; - videoLogList.add(new LogMsg("getFrameRate failed. " + NO_SD_CARD + ". <============ Crash here", mLog.e)); - } - return frameRate; - } - public static String getFileExtension(String fullName) { String fileName = new File(fullName).getName(); int dotIndex = fileName.lastIndexOf('.'); diff --git a/app/src/main/java/com/askey/bit/VideoRecordActivity.java b/app/src/main/java/com/askey/bit/VideoRecordActivity.java index 9292b22..f3b7311 100644 --- a/app/src/main/java/com/askey/bit/VideoRecordActivity.java +++ b/app/src/main/java/com/askey/bit/VideoRecordActivity.java @@ -26,7 +26,6 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Message; -import android.os.SystemProperties; import android.support.v4.app.ActivityCompat; import android.util.Log; import android.util.Size; @@ -38,15 +37,7 @@ import android.widget.ListView; import android.widget.TextView; -import com.askey.widget.CustomPageTransformer; -import com.askey.widget.CustomTextView; -import com.askey.widget.HomeListen; -import com.askey.widget.LogMsg; -import com.askey.widget.PropertyUtils; -import com.askey.widget.VerticalViewPager; -import com.askey.widget.mListAdapter; -import com.askey.widget.mLog; -import com.askey.widget.mPagerAdapter; +import com.askey.widget.*; import java.io.File; import java.math.BigDecimal; @@ -56,12 +47,12 @@ import java.util.Timer; import java.util.TimerTask; -import static com.askey.bit.Utils.DFRAME_RATE; import static com.askey.bit.Utils.EXTRA_VIDEO_BT_FAIL; import static com.askey.bit.Utils.EXTRA_VIDEO_BT_SUCCESS; import static com.askey.bit.Utils.EXTRA_VIDEO_COPY; import static com.askey.bit.Utils.EXTRA_VIDEO_FAIL; import static com.askey.bit.Utils.EXTRA_VIDEO_PASTE; +import static com.askey.bit.Utils.EXTRA_VIDEO_PATH; import static com.askey.bit.Utils.EXTRA_VIDEO_RECORD; import static com.askey.bit.Utils.EXTRA_VIDEO_REFORMAT; import static com.askey.bit.Utils.EXTRA_VIDEO_REMOVE; @@ -74,7 +65,6 @@ import static com.askey.bit.Utils.FPS; import static com.askey.bit.Utils.FRAMESKIP; import static com.askey.bit.Utils.FRAME_RATE; -import static com.askey.bit.Utils.NEW_DFRAME_RATE; import static com.askey.bit.Utils.NEW_FRAME_RATE; import static com.askey.bit.Utils.NO_SD_CARD; import static com.askey.bit.Utils.TAG; @@ -93,10 +83,8 @@ import static com.askey.bit.Utils.getFail; import static com.askey.bit.Utils.getWifiFail; import static com.askey.bit.Utils.getBtFail; -import static com.askey.bit.Utils.getFrameRate; import static com.askey.bit.Utils.getIsRun; import static com.askey.bit.Utils.getPath; -import static com.askey.bit.Utils.getReset; import static com.askey.bit.Utils.getSDPath; import static com.askey.bit.Utils.getSdCard; import static com.askey.bit.Utils.getSuccess; @@ -128,17 +116,17 @@ import static com.askey.bit.restartActivity.EXTRA_MAIN_PID; public class VideoRecordActivity extends Activity { - //TODO 使用SD Card儲存時 SD_Mode 設置為 true + private WifiManager wifiManager; + private BluetoothAdapter mbtAdapter; + //TODO 使用SD Card儲存 SD_Mode 設置為 true public static boolean SD_Mode = true; - //TODO 使用錯誤重啟時 autoRestart 設置為 true + //TODO 使用錯誤重啟 autoRestart 設置為 true public static boolean autoRestart = true; public static boolean extraRecordStatus = false, onRestart = false; - public static int onRun = 0, onReset = 0, onSuccess = 0, onFail = 0; + public static int onRun = 0, onSuccess = 0, onFail = 0, onReset = 0; public static int onWifiSuccess = 0, onWifiFail = 0, onBtSuccess = 0, onBtFail = 0; private static String codeDate0, codeDate1, resetDate; private Size mPreviewSize; - private WifiManager wifiManager; - private BluetoothAdapter mbtAdapter; private TextureView mTextureView0, mTextureView1; private CameraDevice mCameraDevice0, mCameraDevice1; private CameraCaptureSession mPreviewSession0, mPreviewSession1; @@ -153,6 +141,7 @@ public class VideoRecordActivity extends Activity { private mTimerTask timerTask = null; private Timer mTimer = null; private float mLaptime = 0.0f; + private int delayMillis = 3000; private void getSetting(Context context, EditText editText1, EditText editText2, EditText editText3, TextView editText4) { String input = readConfigFile(context, new File(getPath(), configName)); @@ -313,19 +302,6 @@ protected void onCreate(Bundle savedInstanceState) { showPermission(); } else { checkConfigFile(this, true); - //TODO SETPROP - // -> adb shell su 0 getprop persist.our.camera.frameskip - if (isNew) { - try { - SystemProperties.set(FRAMESKIP, FPS[0]); - } catch (Exception e) { - e.getStackTrace(); - isError = true; - videoLogList.add(new LogMsg("SystemProperties error.", mLog.e)); - new Handler().post(() -> saveLog(this, false, false)); - errorMessage = "SystemProperties error. Please check your BuildVersion is 0302."; - } - } //*reflection invoke setStart(); } } @@ -385,7 +361,7 @@ public void onDisconnected(CameraDevice camera) { if (autoRestart && isError) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } @@ -442,7 +418,7 @@ public void onDisconnected(CameraDevice camera) { if (autoRestart && isError) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } @@ -469,7 +445,7 @@ public void onError(CameraDevice camera, int error) { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } } @@ -538,18 +514,8 @@ private void initial() { item.setText(quality); items_quality.add(vi); } - VerticalViewPager pager_Frame = findViewById(R.id.pager1); - pager_Frame.addOnPageChangeListener(new mOnPageChangeListener(0)); - pager_Frame.setAdapter(new mPagerAdapter(items_frame)); - pager_Frame.setPageTransformer(true, new CustomPageTransformer()); - - VerticalViewPager pager_Quality = findViewById(R.id.pager2); - pager_Quality.addOnPageChangeListener(new mOnPageChangeListener(1)); - pager_Quality.setAdapter(new mPagerAdapter(items_quality)); - pager_Quality.setPageTransformer(true, new CustomPageTransformer()); // TODO findViewById - setLoading(false); videoLogList.add(new LogMsg("Initial now.", mLog.v)); thread0 = new HandlerThread("CameraPreview0"); thread0.start(); @@ -624,7 +590,7 @@ public void handleMessage(Message msg) { showDialogLog(); } }); - findViewById(R.id.loadingView).setVisibility(View.INVISIBLE); + ((TextView) findViewById(R.id.record_status)).setText(getSDPath().equals("") ? "Error" : "Ready"); firstFilePath = new ArrayList(); secondFilePath = new ArrayList(); @@ -673,40 +639,6 @@ private void setSetting() { openCamera(secondCamera); }); } - if (check[1]) { - try { - SystemProperties.set(FRAMESKIP, FPS[0]); - if (isNew) { - String getFrameSkip = PropertyUtils.get(FRAMESKIP); - if (null != getFrameSkip) { - if (isInteger(getFrameSkip, false)) { - //if FrameSkip is change or LastCamera != CameraID, delay 3s to change camera devices - SystemProperties.set(FRAMESKIP, FPS[isFrame]); - videoLogList.add(new LogMsg("getFrameSkip:" + PropertyUtils.get(FRAMESKIP), mLog.e)); - } else { - videoLogList.add(new LogMsg("getFrameSkip error, fs(" + getFrameSkip + ") is not integer.", mLog.e)); - } - } else { - videoLogList.add(new LogMsg("getFrameSkip error, fs == null.", mLog.e)); - } - } - ArrayList new_frame = new ArrayList(); - for (String frame : new ArrayList<>(Arrays.asList( // or "3.9fps", "3.4fps", "1.7fps", "0.8fps" - isNew ? NEW_FRAME_RATE : FRAME_RATE))) { - View vi = LayoutInflater.from(this).inflate(R.layout.style_vertical_item, null); - CustomTextView item = vi.findViewById(R.id.customTextView); - item.setText(frame); - new_frame.add(vi); - } - ((VerticalViewPager) findViewById(R.id.pager1)).setAdapter(new mPagerAdapter(new_frame)); - } catch (Exception e) { - e.getStackTrace(); - isError = true; - videoLogList.add(new LogMsg("SystemProperties error.", mLog.e)); - new Handler().post(() -> saveLog(this, false, false)); - errorMessage = "SystemProperties error. Please check your BuildVersion is 0302."; - } - } } else { new Handler().post(() -> saveLog(getApplicationContext(), false, false)); } @@ -753,10 +685,6 @@ private void showDialogLog() { } } - private void setLoading(boolean visible) { - runOnUiThread(() -> findViewById(R.id.loadingView).setVisibility(visible ? View.VISIBLE : View.INVISIBLE)); - } - private void takeRecord() { if (!isError && getSdCard) { videoLogList.add(new LogMsg("#------------------------------", mLog.v)); @@ -931,7 +859,7 @@ private void stopRecord(boolean preview, String date, String cameraID) { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } } @@ -1002,7 +930,7 @@ private void stopRecord(boolean preview) { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } } @@ -1026,54 +954,13 @@ private void moveFile(String video, String pathname, boolean remove) { } } - @SuppressLint("DefaultLocale") - private void fileCheck(String path) { - try { - File video = new File(path); - int frameRate = 0; - - if (video.exists()) { - try { - frameRate = getFrameRate(path); - - } catch (Exception e) { - e.printStackTrace(); - videoLogList.add(new LogMsg("CheckFile error.", mLog.e)); - new Handler().post(() -> saveLog(getApplicationContext(), false, false)); - errorMessage = "CheckFile error."; - } - - boolean check = false; - double[] range = isNew ? NEW_DFRAME_RATE : DFRAME_RATE; - if (frameRate >= range[isFrame]) { - if (frameRate <= range[isFrame] + 3) { - check = true; - } - } else if (frameRate < range[isFrame]) { - if (frameRate >= range[isFrame] - 3) { - check = true; - } - } - if (check) - Success++; - else - Fail++; - } else { - Fail++; - } - videoLogList.add(new LogMsg("CheckFile: " + path.split("/")[3] + - " video_frameRate:" + frameRate + " video_success:" + getSuccess() + " video_fail:" + getFail() + - " wifi_success:" + getWifiSuccess() + " wifi_fail:" + getWifiFail() + - " bt_success:" + getBtSuccess() + " bt_fail:" + getBtFail() + - " reset:" + getReset(), mLog.i)); - new Handler().post(() -> saveLog(getApplicationContext(), false, false)); - } catch (Exception e) { - e.printStackTrace(); - videoLogList.add(new LogMsg("CheckFile error.", mLog.e)); - new Handler().post(() -> saveLog(getApplicationContext(), false, false)); - } + private void checkFile(String path) { + Context context = getApplicationContext(); + Intent intent = new Intent(); + intent.setClassName(context.getPackageName(), checkFileService.class.getName()); + intent.putExtra(EXTRA_VIDEO_PATH, path); + context.startService(intent); } - private void closePreviewSession(String cameraId) { if (isCameraOne(cameraId) && mPreviewSession0 != null) { mPreviewSession0.close(); @@ -1091,9 +978,9 @@ private void startRecord(String cameraId) { try { if (isCameraOne(cameraId)) { wifiEnableOrDisable(); - btEnableOrDisable(); codeDate0 = getCalendarTime(); } else { + btEnableOrDisable(); codeDate1 = getCalendarTime(); } @@ -1206,7 +1093,7 @@ public void onConfigureFailed(CameraCaptureSession cameraCaptureSession) { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } } else { @@ -1218,7 +1105,7 @@ public void onConfigureFailed(CameraCaptureSession cameraCaptureSession) { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } } catch (Exception e) { @@ -1231,7 +1118,7 @@ public void onConfigureFailed(CameraCaptureSession cameraCaptureSession) { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } } @@ -1248,7 +1135,7 @@ private void checkAndClear(String cameraID) { if (isCameraOne(cameraID)) { try { for (String f : firstFilePath) - fileCheck(f); + checkFile(f); } catch (Exception e) { videoLogList.add(new LogMsg("CheckFile " + cameraID + " error.", mLog.e)); } finally { @@ -1258,7 +1145,7 @@ private void checkAndClear(String cameraID) { if (!isCameraOne(cameraID)) { try { for (String s : secondFilePath) - fileCheck(s); + checkFile(s); } catch (Exception e) { videoLogList.add(new LogMsg("CheckFile " + cameraID + " error.", mLog.e)); } finally { @@ -1269,9 +1156,9 @@ private void checkAndClear(String cameraID) { private void checkAndClear() { for (String f : firstFilePath) - fileCheck(f); + checkFile(f); for (String s : secondFilePath) - fileCheck(s); + checkFile(s); firstFilePath.clear(); secondFilePath.clear(); } @@ -1338,7 +1225,7 @@ private MediaRecorder setUpMediaRecorder(String cameraId) { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } else { videoLogList.add(new LogMsg(NO_SD_CARD, mLog.e)); @@ -1368,7 +1255,7 @@ private void takePreview(String cameraId) { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } if (null != texture) { @@ -1420,7 +1307,7 @@ public void onConfigureFailed(CameraCaptureSession session) { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } } @@ -1441,7 +1328,7 @@ protected void updatePreview(CaptureRequest.Builder mPreviewBuilder, CameraCaptu if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } } @@ -1467,7 +1354,7 @@ public void run() { if (autoRestart) { final String dates = resetDate + ""; final boolean records = extraRecordStatus; - new Handler().postDelayed(() -> restartApp(dates, records), 3000); + new Handler().postDelayed(() -> restartApp(dates, records), delayMillis); } } //計算にゆらぎがあるので小数点第1位で丸める @@ -1503,73 +1390,6 @@ public void onSurfaceTextureUpdated(SurfaceTexture surface) { } } - private class mOnPageChangeListener implements VerticalViewPager.OnPageChangeListener { - int pos; - - public mOnPageChangeListener(int pos) { - this.pos = pos; - } - - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - public void onPageSelected(int position) { - switch (pos) { - case 0: - if (!isRecord) { - isFrame = position; - if (isNew) { - setLoading(true); - new Handler().post(() -> { - String getFrameSkip = PropertyUtils.get(FRAMESKIP); - if (null != getFrameSkip) { - if (isInteger(getFrameSkip, false)) { - //if frameskip is chehe or lastcamera != cameraid, delay 3s to change camera devices - try { - SystemProperties.set(FRAMESKIP, FPS[isFrame]); - } catch (Exception e) { - e.getStackTrace(); - isError = true; - videoLogList.add(new LogMsg("SystemProperties error.", mLog.e)); - new Handler().post(() -> saveLog(getApplicationContext(), false, false)); - errorMessage = "SystemProperties error. Please check your BuildVersion is 0302."; - } - videoLogList.add(new LogMsg("getFrameSkip:" + PropertyUtils.get(FRAMESKIP), mLog.e)); - mStateCallback0.onDisconnected(mCameraDevice0); - mStateCallback1.onDisconnected(mCameraDevice1); - new Handler().post(() -> openCamera(firstCamera)); - new Handler().post(() -> openCamera(secondCamera)); - } else { - videoLogList.add(new LogMsg("getFrameSkip error, fs(" + getFrameSkip + ") is not integer.", mLog.e)); - } - } else { - videoLogList.add(new LogMsg("getFrameSkip error, fs == null.", mLog.e)); - } - setLoading(false); - }); - } - } else { - ((VerticalViewPager) findViewById(R.id.pager1)).setCurrentItem(isFrame); - } - break; - case 1: - if (!isRecord) { - isQuality = position; - } else { - ((VerticalViewPager) findViewById(R.id.pager2)).setCurrentItem(isQuality); - } - break; - default: - break; - } - } - - public void onPageScrollStateChanged(int state) { - - } - } - private void wifiEnableOrDisable() { if (wifiManager != null) { try { diff --git a/app/src/main/java/com/askey/bit/checkFileService.java b/app/src/main/java/com/askey/bit/checkFileService.java new file mode 100644 index 0000000..05f6a2f --- /dev/null +++ b/app/src/main/java/com/askey/bit/checkFileService.java @@ -0,0 +1,138 @@ +package com.askey.bit; + +import android.annotation.SuppressLint; +import android.app.IntentService; +import android.content.Intent; +import android.media.MediaExtractor; +import android.media.MediaFormat; + +import com.askey.widget.LogMsg; +import com.askey.widget.mLog; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +import static com.askey.bit.Utils.*; + +@SuppressLint("NewApi") +public class checkFileService extends IntentService { + private String path; + + public checkFileService() { + super("checkFileService"); + } + + public static int getFrameRate(File file) { + int frameRate = 0; + if (!getSDPath().equals("")) { + try { + MediaExtractor extractor; + FileInputStream fis; + try { + extractor = new MediaExtractor(); + fis = new FileInputStream(file); + extractor.setDataSource(fis.getFD()); + } catch (IOException e) { + e.printStackTrace(); + if (null != videoLogList) + videoLogList.add(new LogMsg("getFrameRate failed on MediaExtractor.<============ Crash here", mLog.e)); + return 0; + } + int numTracks = extractor.getTrackCount(); + for (int i = 0; i < numTracks; i++) { + MediaFormat format = extractor.getTrackFormat(i); + if (format.containsKey(MediaFormat.KEY_FRAME_RATE)) { + frameRate = format.getInteger(MediaFormat.KEY_FRAME_RATE); + } + } + extractor.release(); + fis.close(); + } catch (Exception e) { + e.printStackTrace(); + if (null != videoLogList) + videoLogList.add(new LogMsg("getFrameRate failed.<============ Crash here", mLog.e)); + } + } else { + if (null != videoLogList) + videoLogList.add(new LogMsg("getFrameRate failed " + NO_SD_CARD + ".", mLog.e)); + } + return frameRate; + } + + private void checkFile(String path) { + try { + File video = new File(path); + int frameRate = 0; + + if (video.exists()) { + try { + frameRate = getFrameRate(video); + + } catch (Exception e) { + e.printStackTrace(); + if (null != videoLogList) + videoLogList.add(new LogMsg("CheckFile error.", mLog.e)); + } + if (isNew) { + boolean check = false; + double[] range = NEW_DFRAME_RATE; + if (frameRate >= range[isFrame]) { + if (frameRate <= range[isFrame] + 3) { + check = true; + } + } else if (frameRate < range[isFrame]) { + if (frameRate >= range[isFrame] - 3) { + check = true; + } + } + if (check) Success++; + else Fail++; + } else Success++; + } else { + Fail++; + } + if (null != videoLogList) + videoLogList.add(new LogMsg("CheckFile:(" + path.split("/")[3] + + ") video_frameRate:(" + frameRate + ") video_success/fail:(" + getSuccess() + "/" + getFail() + + ") wifi_success/fail:(" + getWifiSuccess() + "/" + getWifiFail() + + ") bt_success/fail:(" + getBtSuccess() + "/" + getBtFail() + + ") app_reset:(" + getReset() + ")", mLog.i)); + } catch (Exception e) { + e.printStackTrace(); + if (null != videoLogList) + videoLogList.add(new LogMsg("CheckFile error.", mLog.e)); + Fail++; + } + } + + private void saveLog() { + Intent intent = new Intent(); + intent.setClassName(this.getPackageName(), saveLogService.class.getName()); + startService(intent); + } + + protected void onHandleIntent(Intent intent) { + try { + path = intent.getStringExtra(EXTRA_VIDEO_PATH); + + Thread t = new Thread(() -> { + + try { + checkFile(path); + saveLog(); + } catch (Exception e) { + e.printStackTrace(); + } + }); + t.start(); + t.join(); + } catch (Exception e) { + e.printStackTrace(); + if (null != videoLogList) + videoLogList.add(new LogMsg("CheckFileService error.", mLog.e)); + } finally { + saveLog(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/askey/bit/saveLogService.java b/app/src/main/java/com/askey/bit/saveLogService.java index e762441..269f5a7 100644 --- a/app/src/main/java/com/askey/bit/saveLogService.java +++ b/app/src/main/java/com/askey/bit/saveLogService.java @@ -36,7 +36,7 @@ public saveLogService() { private void saveLog(ArrayList mLogList, boolean reFormat, boolean move) { String logString; - + assert mLogList!=null; File file = new File(getPath(), logName); if (!file.exists()) { logString = LOG_TITLE + version + "\r\n"; diff --git a/app/src/main/res/drawable/ic_video.xml b/app/src/main/res/drawable/ic_video.xml new file mode 100644 index 0000000..0f8bc6f --- /dev/null +++ b/app/src/main/res/drawable/ic_video.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_video_record.xml b/app/src/main/res/layout/activity_video_record.xml index 04cf1ff..3fb5fde 100644 --- a/app/src/main/res/layout/activity_video_record.xml +++ b/app/src/main/res/layout/activity_video_record.xml @@ -62,52 +62,7 @@ android:layout_height="match_parent" android:layout_weight="1"> - - - - - - - - - - -