77import android .content .Context ;
88import android .content .Intent ;
99import android .content .IntentFilter ;
10+ import android .content .SharedPreferences ;
1011import android .hardware .usb .UsbDevice ;
1112import android .hardware .usb .UsbManager ;
1213import android .os .Bundle ;
14+ import android .provider .Settings ;
1315import android .util .Log ;
1416import android .view .GestureDetector ;
17+ import android .view .MenuItem ;
1518import android .view .MotionEvent ;
1619import android .view .ScaleGestureDetector ;
1720import android .view .SurfaceView ;
1821import android .view .View ;
1922import android .view .ViewGroup ;
2023import android .view .WindowManager ;
24+ import android .widget .Toast ;
2125
26+ import androidx .annotation .NonNull ;
2227import androidx .appcompat .app .ActionBar ;
2328import androidx .appcompat .app .AppCompatActivity ;
29+ import androidx .preference .PreferenceManager ;
30+
31+ import com .google .android .material .floatingactionbutton .FloatingActionButton ;
2432
2533import java .util .HashMap ;
2634
@@ -43,6 +51,8 @@ public class MainActivity extends AppCompatActivity implements UsbDeviceListener
4351 SurfaceView fpvView ;
4452 private GestureDetector gestureDetector ;
4553 private ScaleGestureDetector scaleGestureDetector ;
54+ private SharedPreferences sharedPreferences ;
55+ private static final String ShowWatermark = "ShowWatermark" ;
4656
4757 @ Override
4858 protected void onCreate (Bundle savedInstanceState ) {
@@ -80,15 +90,24 @@ protected void onCreate(Bundle savedInstanceState) {
8090 overlayView = findViewById (R .id .overlayView );
8191 fpvView = findViewById (R .id .fpvView );
8292
93+ sharedPreferences = PreferenceManager .getDefaultSharedPreferences (this );
94+
95+ FloatingActionButton settingsButton = findViewById (R .id .floatingActionButton );
96+ settingsButton .setOnClickListener (new View .OnClickListener () {
97+ @ Override
98+ public void onClick (View v ) {
99+ Intent intent = new Intent (v .getContext (), SettingsActivity .class );
100+ v .getContext ().startActivity (intent );
101+ }
102+ });
103+
83104 // Enable resizing animations
84105 ((ViewGroup )findViewById (R .id .mainLayout )).getLayoutTransition ().enableTransitionType (LayoutTransition .CHANGING );
85106
86107 gestureDetector = new GestureDetector (this , new GestureDetector .SimpleOnGestureListener () {
87108 @ Override
88109 public boolean onSingleTapConfirmed (MotionEvent e ) {
89- if (watermarkView .getVisibility () == View .VISIBLE ) {
90- toggleWatermark ();
91- }
110+ toggleSettingsButton ();
92111 return super .onSingleTapConfirmed (e );
93112 }
94113
@@ -110,8 +129,6 @@ public void onScaleEnd(ScaleGestureDetector detector) {
110129 }
111130 });
112131
113- watermarkView .setVisibility (View .GONE );
114-
115132 mUsbMaskConnection = new UsbMaskConnection ();
116133 mVideoReader = new VideoReaderExoplayer (fpvView , overlayView , this );
117134
@@ -132,26 +149,13 @@ public boolean onTouchEvent(MotionEvent event) {
132149 return super .onTouchEvent (event );
133150 }
134151
135- private void toggleWatermark () {
136- if (watermarkAnimationInProgress ) {
137- return ;
138- }
139- watermarkAnimationInProgress = true ;
140-
141- float targetAlpha = 0 ;
142- if (watermarkView .getAlpha () == 0 ) {
143- targetAlpha = 0.3F ;
144- }
152+ private void toggleSettingsButton () {
153+ // TODO: animate show/hide, start hide timer if shown
154+ }
145155
146- watermarkView .animate ()
147- .alpha (targetAlpha )
148- .setDuration (shortAnimationDuration )
149- .setListener (new AnimatorListenerAdapter () {
150- @ Override
151- public void onAnimationEnd (Animator animation ) {
152- watermarkAnimationInProgress = false ;
153- }
154- });
156+ private void updateWatermark () {
157+ boolean showWatermark = sharedPreferences .getBoolean (ShowWatermark , true );
158+ watermarkView .setAlpha (showWatermark ? 0.3F : 0F );
155159 }
156160
157161 @ Override
@@ -196,7 +200,6 @@ private void connect(){
196200 usbConnected = true ;
197201 mUsbMaskConnection .setUsbDevice (usbManager .openDevice (usbDevice ), usbDevice );
198202 mVideoReader .setUsbMaskConnection (mUsbMaskConnection );
199- watermarkView .setVisibility (View .VISIBLE );
200203 overlayView .hide ();
201204 mVideoReader .start ();
202205 }
@@ -214,6 +217,8 @@ public void onResume() {
214217 overlayView .showOpaque (R .string .waiting_for_usb_device , OverlayStatus .Disconnected );
215218 }
216219 }
220+
221+ updateWatermark ();
217222 }
218223
219224 @ Override
@@ -225,6 +230,7 @@ protected void onStop() {
225230 mVideoReader .stop ();
226231 usbConnected = false ;
227232 }
233+
228234 @ Override
229235 protected void onPause () {
230236 super .onPause ();
0 commit comments