From a2555d7a8d228c91da9f8014ca4a09dbd0d050ae Mon Sep 17 00:00:00 2001 From: Peng Li Date: Tue, 29 May 2018 00:15:36 +0800 Subject: [PATCH] Add fullscreen toggle --- app/build.gradle | 1 + .../main/java/ai/suanzi/rtmpclient/CameraView.java | 4 +- .../java/ai/suanzi/rtmpclient/MainActivity.java | 83 ++++++++++++++++++---- .../main/java/ai/suanzi/rtmpclient/MyService.java | 9 ++- 4 files changed, 79 insertions(+), 18 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 49dfb20..7d9f556 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,4 +43,5 @@ dependencies { implementation files('libs/android-mail-1.5.5.jar') implementation files('libs/android-activation-1.5.5.jar') implementation 'com.android.support:design:27.1.1' + implementation group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' } diff --git a/app/src/main/java/ai/suanzi/rtmpclient/CameraView.java b/app/src/main/java/ai/suanzi/rtmpclient/CameraView.java index 71a684d..de88ca1 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/CameraView.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/CameraView.java @@ -52,12 +52,12 @@ public class CameraView extends SurfaceView implements SurfaceHolder.Callback { // SurfaceHolder.Callback implementation @Override public void surfaceCreated(final SurfaceHolder holder){ - gLogger.error("SurfacedCreated, screen size w: " + SCREEN_WIDTH + ", h:" + SCREEN_HEIGHT + ". preview size, w: " + width + ", h: " + height); + gLogger.debug("SurfacedCreated, screen size w: " + SCREEN_WIDTH + ", h:" + SCREEN_HEIGHT + ". preview size, w: " + width + ", h: " + height); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int widht, int height){ - gLogger.error("surfaceChanged"); + gLogger.debug("surfaceChanged"); mHolder = holder; mCallback.onSurfaceChanged(holder, format, widht, height); } diff --git a/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java b/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java index 33ac4a6..c257b9f 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java @@ -32,6 +32,15 @@ import ai.suanzi.rtmpclient.MyService.LocalBinder; import android.os.IBinder; import android.net.ConnectivityManager; import android.view.ViewGroup; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; + +//import org.apache.http.client.methods; +import android.view.MotionEvent; +import android.graphics.Color; +import android.os.Build; +import android.content.pm.ActivityInfo; public class MainActivity extends AppCompatActivity implements MyService.MyServiceEventListener, CameraView.Callback { @@ -44,6 +53,7 @@ public class MainActivity extends AppCompatActivity implements MyService.MyServi boolean mBounded = false; MyService mServer; Intent mIntent; + private boolean isFullScreen = false; private CameraView mCameraView; @@ -130,9 +140,9 @@ public class MainActivity extends AppCompatActivity implements MyService.MyServi mServer.startPreview(mCameraView.getHolder()); Camera.Size cs = mServer.getBestPictureSize(); mCameraView.setLayout(cs.width, cs.height); + } else { + gLogger.error("onServiceConnected - setRtmpUrl failed"); } - - } }; @@ -154,13 +164,28 @@ public class MainActivity extends AppCompatActivity implements MyService.MyServi } private void initCameraView (){ - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); - requestWindowFeature(Window.FEATURE_NO_TITLE); - getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - ///setContentView(R.layout.activity_main); +// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); +// requestWindowFeature(Window.FEATURE_NO_TITLE); +// getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); +// ///setContentView(R.layout.activity_main); +// //getWindow().setNavigationBarColor(Color.TRANSPARENT); +// +// View decorView = getWindow().getDecorView(); +// int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION +// | View.SYSTEM_UI_FLAG_FULLSCREEN; +// decorView.setSystemUiVisibility(uiOptions); +// +// +// ActionBar actionBar = getSupportActionBar(); +// try { +// actionBar.hide(); +// }catch (NullPointerException e){ +// gLogger.error("initCameraView - " + e.getMessage()); +// e.printStackTrace(); +// } + + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏 - ActionBar actionBar = getSupportActionBar(); - actionBar.hide(); DisplayMetrics outMetrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(outMetrics); @@ -201,20 +226,20 @@ public class MainActivity extends AppCompatActivity implements MyService.MyServi } ////////// LogUtil.sendLogs(); /// Log test //LogUtil.sendLogs(); - - new CheckVersionInfoTask(MainActivity.this).execute(); + // test + //new CheckVersionInfoTask(MainActivity.this).execute(); } @Override protected void onPause(){ super.onPause(); - gLogger.error("OnPause --------->"); + gLogger.debug("OnPause --------->"); } @Override protected void onResume() { super.onResume(); - gLogger.error("OnResume ---------> "); + gLogger.debug("OnResume ---------> "); } @Override @@ -246,13 +271,29 @@ public class MainActivity extends AppCompatActivity implements MyService.MyServi @Override public void onBackPressed() { - gLogger.error("onBackPressed --------->"); + gLogger.debug("onBackPressed --------->"); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } + @Override + public boolean onTouchEvent(MotionEvent event) { + if(event.getAction() == MotionEvent.ACTION_UP) { + toggleFullScreen(); + } + return super.onTouchEvent(event); + } + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + if (hasFocus && Build.VERSION.SDK_INT >= 19) { + toggleFullScreen(); + } + } + private String getMacAddr() { WifiManager manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiInfo info = manager.getConnectionInfo(); @@ -301,4 +342,20 @@ public class MainActivity extends AppCompatActivity implements MyService.MyServi intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } + + private void toggleFullScreen (){ + View decorView = getWindow().getDecorView(); + if(!isFullScreen) { + decorView.setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); + } else { + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_VISIBLE); + } + isFullScreen = !isFullScreen; + } } diff --git a/app/src/main/java/ai/suanzi/rtmpclient/MyService.java b/app/src/main/java/ai/suanzi/rtmpclient/MyService.java index ae41a41..0e99b88 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/MyService.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/MyService.java @@ -199,6 +199,7 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer return; } try { + mCamera.setPreviewCallback(this); mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (Exception e){ @@ -219,9 +220,11 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer } public boolean setRtmpUrl (String url){ - //this.rtmpUrl = url; - if(mCamera == null || mPreferredSize == null){ - gLogger.error("setRtmpUrl, error mCamera or PreferredSize is null"); + if(mCamera == null) { + gLogger.error("setRtmpUrl mCamera is null"); + return false; + } else if (mPreferredSize == null) { + gLogger.error("setRtmpUrl mPreferredSize is null"); return false; } gLogger.error("setRtmpUrl - size: " + mPreferredSize.width + "x" + mPreferredSize.height + ". url: " + url); -- 2.11.0