| | |
| | | import android.media.MediaFormat; |
| | | import android.media.MediaMuxer; |
| | | import android.media.MediaRecorder; |
| | | import android.text.TextUtils; |
| | | import android.util.Log; |
| | | |
| | | import com.anyun.libusbcamera.UsbCamera; |
| | | import com.anyun.libusbcamera.WatermarkParam; |
| | | import com.safeluck.floatwindow.MediaArgu; |
| | | import com.safeluck.floatwindow.ResponseVO; |
| | | import com.safeluck.floatwindow.util.GlobalData; |
| | | import com.safeluck.floatwindow.util.VideoFileUtils; |
| | | |
| | | import timber.log.Timber; |
| | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.nio.ByteBuffer; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.concurrent.Executors; |
| | | import java.util.concurrent.ScheduledExecutorService; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * USB摄像头录像管理器 |
| | |
| | | notifyCallback(0, -1, "USB摄像头打开失败"); |
| | | return; |
| | | } |
| | | |
| | | setWaterMask(); |
| | | cameraExists = true; |
| | | Timber.d("USB摄像头打开成功"); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | WatermarkParam watermarkParam; |
| | | ArrayList<WatermarkParam> watermarkParamList = new ArrayList<>(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | int baseY = 20; |
| | | int fontSize= 24; |
| | | private ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); |
| | | private void setWaterMask() { |
| | | |
| | | scheduledExecutorService.scheduleWithFixedDelay(() -> { |
| | | |
| | | |
| | | |
| | | if (!TextUtils.isEmpty(GlobalData.getInstance().getWaterMaskInfo())){ |
| | | Log.i(TAG,"tieshuiin"); |
| | | |
| | | if (resolutionArr[0]==320&&resolutionArr[1]==240){ |
| | | fontSize = 24; |
| | | baseY = 2; |
| | | }else if (resolutionArr[0]==640&&resolutionArr[1]==480){ |
| | | fontSize = 32; |
| | | baseY = 4; |
| | | }else if (resolutionArr[0]==1280&&resolutionArr[1]==720){ |
| | | fontSize = 48; |
| | | baseY = 6; |
| | | }else{ |
| | | baseY = 2; |
| | | fontSize = 24; |
| | | } |
| | | String school = GlobalData.getInstance().parseWaterMaskInfo("school", "无", GlobalData.ShareType.STRING); |
| | | watermarkParam = new WatermarkParam(10,baseY,school); |
| | | watermarkParamList.clear(); |
| | | watermarkParamList.add(watermarkParam); |
| | | |
| | | String teacher = GlobalData.getInstance().parseWaterMaskInfo("teacher", "无", GlobalData.ShareType.STRING); |
| | | |
| | | |
| | | String stu = GlobalData.getInstance().parseWaterMaskInfo("student", "无", GlobalData.ShareType.STRING); |
| | | baseY = fontSize*11/10+baseY; |
| | | watermarkParam = new WatermarkParam(10,baseY,"教练:"+teacher+" 学员:"+stu); |
| | | watermarkParamList.add(watermarkParam); |
| | | |
| | | double speed = GlobalData.getInstance().parseWaterMaskInfo("speed", 0.0, GlobalData.ShareType.DOUBLE); |
| | | |
| | | |
| | | String czh = GlobalData.getInstance().parseWaterMaskInfo("car_license", "无", GlobalData.ShareType.STRING) + GlobalData.getInstance().getCameraTag; |
| | | baseY = fontSize*11/10+baseY; |
| | | watermarkParam = new WatermarkParam(10,resolutionArr[1]-baseY,czh +" "+String.format("速度:%.1f",speed)); |
| | | watermarkParamList.add(watermarkParam); |
| | | |
| | | |
| | | double latitude = GlobalData.getInstance().parseWaterMaskInfo("latitude", 29.51228918, GlobalData.ShareType.DOUBLE); |
| | | double longitude = GlobalData.getInstance().parseWaterMaskInfo("longitude", 106.45556208, GlobalData.ShareType.DOUBLE); |
| | | |
| | | // new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) |
| | | baseY = fontSize*11/10+baseY; |
| | | watermarkParam = new WatermarkParam(10,resolutionArr[1]-fontSize, String.format("%.6f %.6f", latitude, longitude)+" "+sdf.format(new Date())); |
| | | watermarkParamList.add(watermarkParam); |
| | | |
| | | if (resolutionArr[0]==320&&resolutionArr[1]==240){ |
| | | usbCamera.enableWatermark(true,"/system/ms_unicode_24.bin"); |
| | | usbCamera.setWatermark(3,fontSize,1,watermarkParamList); |
| | | }else if (resolutionArr[0]==640&&resolutionArr[1]==480){ |
| | | usbCamera.enableWatermark(true,"/system/ms_unicode_32.bin"); |
| | | usbCamera.setWatermark(3,fontSize,1,watermarkParamList); |
| | | }else if (resolutionArr[0]==1280&&resolutionArr[1]==720){ |
| | | usbCamera.enableWatermark(true,"/system/ms_unicode_48.bin"); |
| | | usbCamera.setWatermark(3,fontSize,1,watermarkParamList); |
| | | }else{ |
| | | usbCamera.enableWatermark(true,"/system/ms_unicode_24.bin"); |
| | | usbCamera.setWatermark(3,fontSize,1,watermarkParamList); |
| | | } |
| | | } |
| | | |
| | | },1,1, TimeUnit.SECONDS); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 停止录像 |
| | | */ |