@RequiresPermission("android.permission.BLUETOOTH") public String SetupPlugin() { // Bluetooth Adapter this.mBtAdapter = BluetoothAdapter.getDefaultAdapter(); // if Bluettoth Adapter is avaibale, start Service if(this.mBtAdapter == null) { return "Bluetooth is not available"; } else { if(this.mBtService == null) { this.startService(); } return "SUCCESS"; } }
@RequiresPermission(Manifest.permission.CAMERA) private void startIfReady() throws IOException, SecurityException { if (mStartRequested && mSurfaceAvailable) { mCameraSource.start(mSurfaceView.getHolder()); if (mOverlay != null) { Size size = mCameraSource.getPreviewSize(); int min = Math.min(size.getWidth(), size.getHeight()); int max = Math.max(size.getWidth(), size.getHeight()); if (isPortraitMode()) { // Swap width and height sizes when in portrait, since it will be rotated by // 90 degrees mOverlay.setCameraInfo(min, max, mCameraSource.getCameraFacing()); } else { mOverlay.setCameraInfo(max, min, mCameraSource.getCameraFacing()); } mOverlay.clear(); } mStartRequested = false; } }
/** * Opens the camera and starts sending preview frames to the underlying detector. The supplied * surface holder is used for the preview so frames can be displayed to the user. * * @param surfaceHolder the surface holder to use for the preview frames * @throws IOException if the supplied surface holder could not be used as the preview display */ @RequiresPermission(Manifest.permission.CAMERA) public CameraSource start(SurfaceHolder surfaceHolder) throws IOException { synchronized (mCameraLock) { if (mCamera != null) { return this; } mCamera = createCamera(); mCamera.setPreviewDisplay(surfaceHolder); mCamera.startPreview(); mProcessingThread = new Thread(mFrameProcessor); mFrameProcessor.setActive(true); mProcessingThread.start(); } return this; }
@RequiresPermission(allOf = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}) public File putFile(@NonNull String key, @Nullable File file,boolean deleteOldFile){ if (file == null) return null; try { if (file.exists() && !FileUtils.isFileForImage(file)) { File enc = concealCrypto.obscureFile(file,deleteOldFile); putString(key, enc.getAbsolutePath()); return enc; } } catch (Exception e){ e.printStackTrace(); } return null; }
@RequiresPermission(allOf = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}) public void removeLocationUpdates() { if (Configuration.sIsFeatureLocationAvailable) { LogHelper.debugLog(TAG, "Removing location updates..."); try { mLocationManager.removeUpdates(this); mIsRequestingLocationUpdates = false; } catch (SecurityException e) { LogHelper.errorLog(TAG, "Error while trying to remove location updates; " + e.getMessage()); e.printStackTrace(); } } else { LogHelper.warnLog(TAG, "Will not remove location updates, location feature is not available"); } }
/** * Opens the camera and starts sending preview frames to the underlying detector. The supplied * texture view is used for the preview so frames can be displayed to the user. * * @param textureView the surface holder to use for the preview frames * @param displayOrientation the display orientation for a non stretched preview * @throws IOException if the supplied texture view could not be used as the preview display */ @RequiresPermission(Manifest.permission.CAMERA) public Camera2Source start(@NonNull AutoFitTextureView textureView, int displayOrientation) throws IOException { mDisplayOrientation = displayOrientation; if(ContextCompat.checkSelfPermission(mContext, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { if (cameraStarted) { return this; } cameraStarted = true; startBackgroundThread(); mProcessingThread = new Thread(mFrameProcessor); mFrameProcessor.setActive(true); mProcessingThread.start(); mTextureView = textureView; if (mTextureView.isAvailable()) { setUpCameraOutputs(mTextureView.getWidth(), mTextureView.getHeight()); } } return this; }
@RequiresPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) public void saveImageIntoGallery() { if (mCurrentImageFile == null) { if (mImageSaveCallback != null) { mImageSaveCallback.onFail(new IllegalStateException("image not downloaded yet")); } return; } try { String result = MediaStore.Images.Media.insertImage(getContext().getContentResolver(), mCurrentImageFile.getAbsolutePath(), mCurrentImageFile.getName(), ""); if (mImageSaveCallback != null) { if (!TextUtils.isEmpty(result)) { mImageSaveCallback.onSuccess(result); } else { mImageSaveCallback.onFail(new RuntimeException("saveImageIntoGallery fail")); } } } catch (FileNotFoundException e) { if (mImageSaveCallback != null) { mImageSaveCallback.onFail(e); } } }
/** * Required to place inside your activities {@code onStart} method. You'll also most likely want * to check that this Location Layer plugin instance inside your activity is null or not. * * @since 0.1.0 */ @RequiresPermission(anyOf = {ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION}) @OnLifecycleEvent(Lifecycle.Event.ON_START) public void onStart() { if (locationLayerMode != LocationLayerMode.NONE) { setLocationLayerEnabled(locationLayerMode); } if (!compassManager.getCompassListeners().isEmpty() || (locationLayerMode == LocationLayerMode.COMPASS && compassManager.isSensorAvailable())) { compassManager.onStart(); } if (mapboxMap != null) { mapboxMap.addOnCameraMoveListener(this); } }
@RequiresPermission( allOf = {"android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN"} ) String DisableBluetooth() { if(!this.mBtAdapter.isEnabled()) { return "You Must Enable The BlueTooth"; } else { if(this.mBtAdapter != null) { this.mBtAdapter.cancelDiscovery(); } if(this.mBtAdapter.isEnabled()) { this.mBtAdapter.disable(); } return "SUCCESS"; } }
@RequiresPermission("android.permission.BLUETOOTH") public void stopThread() { Log.d(TAG, "stop"); if(this.mBtService != null) { this.mBtService.stop(); this.mBtService = null; } if(this.mBtAdapter != null) { this.mBtAdapter = null; } this.SetupPlugin(); }
@SuppressWarnings("MissingPermission") @RequiresPermission(anyOf = { Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION }) private Observable<Location> lastLocation() { return rxLocation.location().lastLocation().toObservable() .doOnSubscribe(ignore -> Timber.d("lastLocation: on subscribe")) .doOnNext(item -> Timber.d("lastLocation: item: " + item)) .doOnComplete(() -> Timber.d("lastLocation: on complete")) .doOnDispose(() -> Timber.d("lastLocation: on dispose")); }
@SuppressWarnings("MissingPermission") @RequiresPermission(anyOf = { Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION }) private Observable<Location> locationUpdates() { return rxLocation.location().updates(locationRequest) .subscribeOn(Schedulers.io()) .doOnSubscribe(ignore -> Timber.d("locationUpdates: on subscribe")) .doOnNext(item -> Timber.d("locationUpdates: item: " + item)) .doOnComplete(() -> Timber.d("locationUpdates: on complete")) .doOnDispose(() -> Timber.d("locationUpdates: on dispose")); }
/** * Opens the camera and starts sending preview frames to the underlying detector. The preview * frames are not displayed. * * @throws IOException if the camera's preview texture or display could not be initialized */ @RequiresPermission(Manifest.permission.CAMERA) public CameraSource start() throws IOException { synchronized (mCameraLock) { if (mCamera != null) { return this; } mCamera = createCamera(); // SurfaceTexture was introduced in Honeycomb (11), so if we are running and // old version of Android. fall back to use SurfaceView. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mDummySurfaceTexture = new SurfaceTexture(DUMMY_TEXTURE_NAME); mCamera.setPreviewTexture(mDummySurfaceTexture); } else { mDummySurfaceView = new SurfaceView(mContext); mCamera.setPreviewDisplay(mDummySurfaceView.getHolder()); } mCamera.startPreview(); mProcessingThread = new Thread(mFrameProcessor); mFrameProcessor.setActive(true); mProcessingThread.start(); } return this; }
@RequiresPermission(allOf = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}) public String putImage(@NonNull String key, Bitmap bitmap){ File imageFile = new File(getImageDirectory(mFolderName),"images_"+System.currentTimeMillis()+".png"); if(FileUtils.saveBitmap(imageFile, bitmap)){ concealCrypto.obscureFile(imageFile,true); editor.putString(key,imageFile.getAbsolutePath()).apply(); return imageFile.getAbsolutePath(); } return null; }
@RequiresPermission(allOf = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}) public String putImage(@NonNull String key, @Nullable File file){ if (FileUtils.isFileForImage(file)) { File imageFile = FileUtils.moveFile(file,getImageDirectory(mFolderName)); if (imageFile!=null && imageFile.exists()) { concealCrypto.obscureFile(imageFile,true); putString(key, imageFile.getAbsolutePath()); return imageFile.getAbsolutePath(); } } return null; }
@SuppressWarnings("deprecation") @RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH}) @Override public void startScanInternal() { if(!isScanning){ this.callBack = getCallBack(); bluetoothAdapter.startLeScan(this); isScanning = true; } }
@SuppressWarnings("deprecation") @RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH}) @Override public void stopScanInternal() { if(isScanning){ bluetoothAdapter.stopLeScan(this); isScanning = false; } }
@RequiresPermission("android.permission.BLUETOOTH") public synchronized void onResume() { super.onResume(); Log.d(TAG, "+ ON RESUME +"); if(this.mBtService != null && this.mBtService.getState() == 0) { this.mBtService.start(); } }
@RequiresPermission(Manifest.permission.CAMERA) public void start(CameraSource cameraSource) throws IOException, SecurityException { if (cameraSource == null) { stop(); } mCameraSource = cameraSource; if (mCameraSource != null) { mStartRequested = true; startIfReady(); } }
@NonNull @RequiresPermission( anyOf = {"android.permission.ACCESS_COARSE_LOCATION", "android.permission" + ".ACCESS_FINE_LOCATION"} ) public Maybe<Location> getLastLocation() { return MaybeTask.create(() -> client.getLastLocation()); }
/** * Observes network connectivity. Information about network state, type and typeName are contained * in * observed Connectivity object. * * @param context Context of the activity or an application * @return RxJava Observable with Connectivity class containing information about network state, * type and typeName */ @RequiresPermission(Manifest.permission.ACCESS_NETWORK_STATE) public static Observable<Connectivity> observeNetworkConnectivity(final Context context) { final NetworkObservingStrategy strategy; if (Preconditions.isAtLeastAndroidMarshmallow()) { strategy = new MarshmallowNetworkObservingStrategy(); } else if (Preconditions.isAtLeastAndroidLollipop()) { strategy = new LollipopNetworkObservingStrategy(); } else { strategy = new PreLollipopNetworkObservingStrategy(); } return observeNetworkConnectivity(context, strategy); }
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH}) @Override public void stopScanInternal() { if (isScanning) { bluetoothLeScanner.stopScan(scanCallback); isScanning = false; } }
/** * Checks connectivity with the Internet. This operation is performed only once. * * @param strategy which implements InternetObservingStrategy * @return RxJava Single with Boolean - true, when we have an access to the Internet * and false if not */ @RequiresPermission(Manifest.permission.INTERNET) public static Single<Boolean> checkInternetConnectivity( final InternetObservingStrategy strategy) { checkStrategyIsNotNull(strategy); return strategy.checkInternetConnectivity(strategy.getDefaultPingHost(), DEFAULT_PING_PORT, DEFAULT_PING_TIMEOUT_IN_MS, new DefaultErrorHandler()); }
@RequiresPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) @Override public void openImageFromCamera() { if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && ContextCompat .checkSelfPermission(getContext(), Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { openImageFromCameraIntent(); } else { requestPermissions(new String[]{ Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, REQUEST_WRITE_EXTERNAL_PERMISSION); } }
@RequiresPermission("android.permission.BLUETOOTH") public synchronized void connect(BluetoothDevice device) { Log.d(TAG, "connect to: " + device); // Cancel any thread attempting to make a connection if (mState == STATE_CONNECTING) { if (mConnectThread == null) { } else { mConnectThread.cancel(); mConnectThread = null; } } // Cancel any thread currently running a connection if (mConnectedThread == null) { } else { mConnectedThread.cancel(); mConnectedThread = null; } // Start the thread to connect with the given device mConnectThread = new BluetoothService.ConnectThread(device); mConnectThread.start(); setState(STATE_CONNECTING); }
/** * 判断网络是否连接 * * @param context 上下文 * @return {@code true}: 可用<br>{@code false}: 不可用 */ @RequiresPermission(Manifest.permission.ACCESS_NETWORK_STATE) public static boolean isConnected(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager != null) { NetworkInfo info = connectivityManager.getActiveNetworkInfo(); return info != null && info.isConnected(); } return false; }
/** * Checks if WiFi is enabled and connected to a network. * <b>Note</b>: This does not check access to the Internet. * * @param context Which context to use to check * @return {@code True} if WiFi is enabled and connected to a network, {@code false} otherwise */ @RequiresPermission(Manifest.permission.ACCESS_WIFI_STATE) public static boolean isWifiConnected(@NonNull final Context context) { final WifiManager wiFiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); if (wiFiManager != null && wiFiManager.isWifiEnabled()) { // Wi-Fi adapter is ON final WifiInfo wifiInfo = wiFiManager.getConnectionInfo(); return wifiInfo != null && wifiInfo.getNetworkId() != -1; } else { // Wi-Fi adapter is OFF return false; } }
/** * Checks if device is connected to other, non-WiFi networks. * <b>Note</b>: This does not check access to the Internet. * * @param context Which context to use to check * @return {@code True} if there is a non-WiFi network connected, {@code false} if not */ @RequiresPermission(allOf = {Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.ACCESS_NETWORK_STATE}) public static boolean isNonWifiNetworkConnected(@NonNull final Context context) { final ConnectivityManager connectivityManager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); final NetworkInfo networkInfo = connectivityManager == null ? null : connectivityManager.getActiveNetworkInfo(); boolean hasOtherNetwork = false; if (networkInfo != null && networkInfo.isConnected()) { hasOtherNetwork = true; } return hasOtherNetwork && !isWifiConnected(context); }