1 package com.intel.realsense.recording;
3 import android.Manifest;
4 import android.content.Context;
5 import android.content.pm.PackageManager;
6 import android.os.Bundle;
7 import android.os.Environment;
8 import android.os.Handler;
9 import com.google.android.material.floatingactionbutton.FloatingActionButton;
10 import androidx.core.app.ActivityCompat;
11 import androidx.core.content.ContextCompat;
12 import androidx.appcompat.app.AppCompatActivity;
13 import android.util.Log;
14 import android.view.View;
15 import android.widget.TextView;
28 import java.text.SimpleDateFormat;
29 import java.util.Date;
32 private static final String TAG =
"librs recording example";
42 private final Handler
mHandler =
new Handler();
51 protected void onCreate(Bundle savedInstanceState) {
52 super.onCreate(savedInstanceState);
53 setContentView(
R.layout.activity_main);
55 mAppContext = getApplicationContext();
56 mBackGroundText = findViewById(
R.id.connectCameraText);
57 mGLSurfaceView = findViewById(
R.id.glSurfaceView);
59 mStartRecordFab = findViewById(
R.id.startRecordFab);
60 mStopRecordFab = findViewById(
R.id.stopRecordFab);
62 mStartRecordFab.setOnClickListener(
new View.OnClickListener() {
64 public void onClick(View
view) {
68 mStopRecordFab.setOnClickListener(
new View.OnClickListener() {
70 public void onClick(View
view) {
76 if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.O &&
77 ContextCompat.checkSelfPermission(
this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
82 if (ContextCompat.checkSelfPermission(
this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
83 ActivityCompat.requestPermissions(
this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
87 mPermissionsGranted =
true;
93 mGLSurfaceView.
close();
98 if (ContextCompat.checkSelfPermission(
this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
103 if (ContextCompat.checkSelfPermission(
this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
104 ActivityCompat.requestPermissions(
this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
108 mPermissionsGranted =
true;
115 if(mPermissionsGranted)
118 Log.e(TAG,
"missing permissions");
124 if(mRsContext != null)
130 File folder =
new File(getExternalFilesDir(null).getAbsolutePath() + File.separator +
"rs_bags");
132 SimpleDateFormat sdf =
new SimpleDateFormat(
"yyyyMMdd_HHmmss");
133 String currentDateAndTime = sdf.format(
new Date());
134 File file =
new File(folder, currentDateAndTime +
".bag");
135 return file.getAbsolutePath();
150 if(dl.getDeviceCount() > 0) {
158 runOnUiThread(
new Runnable() {
161 mBackGroundText.setVisibility(state ? View.VISIBLE : View.GONE);
162 mStartRecordFab.setVisibility(!state ? View.VISIBLE : View.GONE);
163 mStopRecordFab.setVisibility(View.GONE);
170 start(mStartRecordFab.getVisibility() == View.VISIBLE);
171 runOnUiThread(
new Runnable() {
174 mStartRecordFab.setVisibility(mStartRecordFab.getVisibility() == View.GONE ? View.VISIBLE : View.GONE);
175 mStopRecordFab.setVisibility(mStopRecordFab.getVisibility() == View.GONE ? View.VISIBLE : View.GONE);
182 public void onDeviceAttach() {
187 public void onDeviceDetach() {
193 Runnable mStreaming =
new Runnable() {
200 mHandler.post(mStreaming);
202 catch (Exception
e) {
203 Log.e(TAG,
"streaming, error: " + e.getMessage());
208 private synchronized void start(
boolean record) {
212 mGLSurfaceView.
clear();
213 Log.d(TAG,
"try start streaming");
223 mHandler.post(mStreaming);
224 Log.d(TAG,
"streaming started successfully");
225 }
catch (Exception
e) {
226 Log.d(TAG,
"failed to start streaming");
230 private synchronized void stop() {
234 Log.d(TAG,
"try stop streaming");
235 mIsStreaming =
false;
236 mHandler.removeCallbacks(mStreaming);
238 mGLSurfaceView.
clear();
239 Log.d(TAG,
"streaming stopped successfully");
240 }
catch (Exception
e) {
241 Log.d(TAG,
"failed to stop streaming");
::rosgraph_msgs::Log_< std::allocator< void > > Log
synchronized void start(boolean record)
uvc_xu_option< int > super
synchronized void setDevicesChangedCallback(DeviceListener listener)
GLRsSurfaceView mGLSurfaceView
::std_msgs::String_< std::allocator< void > > String
static void init(Context context)
FloatingActionButton mStartRecordFab
def run(include_folder_path, addon_folder_path)
static final int PERMISSIONS_REQUEST_WRITE
FloatingActionButton mStopRecordFab
boolean mPermissionsGranted
static final int PERMISSIONS_REQUEST_CAMERA
void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
void showConnectLabel(final boolean state)
DeviceList queryDevices()
void onCreate(Bundle savedInstanceState)