1、下面的返回、home栏可用Screen.fullScreen控制

2、导航栏的显示和隐藏用下面代码控制

 private AndroidJavaObject currentActivity{get{return new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");}}/// <summary>///  隐藏上方状态栏/// </summary>public void HideStatusBar(){
#if UNITY_ANDROIDcurrentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>{currentActivity.Call<AndroidJavaObject>("getWindow").Call("clearFlags", 2048);}));
#endifDebug.Log("hide status bar");}/// <summary>///  显示上方状态栏/// </summary>public void ShowStatusBar(){
#if UNITY_ANDROIDcurrentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>{currentActivity.Call<AndroidJavaObject>("getWindow").Call("addFlags", 2048);// WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN}));
#endifDebug.Log("show status bar");}

  

3、

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class AndroidInterface
{private static AndroidInterface instance;public static AndroidInterface Instance {get {if (instance==null){instance = new AndroidInterface();}return instance;}}private AndroidInterface() { }private AndroidJavaObject currentActivity{get{return new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");}}#region/// <summary>/// 设置全面屏/// </summary>/// <param name="isSetNotchScreen"></param>public void SafeArea(bool isSetNotchScreen){currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>{AndroidJavaObject currentWindow = currentActivity.Call<AndroidJavaObject>("getWindow");//返回Window AndroidJavaObject lp = currentWindow.Call<AndroidJavaObject>("getAttributes");//返回WindowManager.LayoutParamsif (isSetNotchScreen){//int WindowManager_LayoutParams_FLAG_LAYOUT_IN_OVERSCAN = 33554432;//允许窗口内容扩展到屏幕的过扫描区域(如果有)。窗口仍应正确定位其内容以考虑过扫描区域。int WindowManager_LayoutParams_FLAG_TRANSLUCENT_STATUS = 67108864;//有透明的状态栏和导航栏,且屏幕延伸至状态栏内部lp.Set("flags", WindowManager_LayoutParams_FLAG_TRANSLUCENT_STATUS);}else{int WindowManager_LayoutParams_FLAG_LAYOUT_IN_SCREEN = 256;lp.Set("flags", WindowManager_LayoutParams_FLAG_LAYOUT_IN_SCREEN);}currentWindow.Call("setAttributes", lp);}));}#endregion#region 标题栏/// <summary>///  隐藏上方状态栏/// </summary>public void HideStatusBar(){
#if UNITY_ANDROID&&!UNITY_EDITOR //currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>//{//currentActivity.Call<AndroidJavaObject>("getWindow").Call("clearFlags", 2048);//}));Screen.fullScreen = true;
#endifDebug.Log("hide status bar");}/// <summary>///  显示上方状态栏/// </summary>public void ShowStatusBar(){
#if UNITY_ANDROID&&!UNITY_EDITOR //currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>//{// currentActivity.Call<AndroidJavaObject>("getWindow").Call("addFlags", 2048);// WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN//}));Screen.fullScreen = false;
#endifDebug.Log("show status bar");}#endregion 标题栏#region 摄像头AndroidJavaObject androidCamera;AndroidJavaObject CrazyFocusPocus(){// Get activity instance (standard way, solid)var pl_class = new AndroidJavaClass("com.unity3d.player.UnityPlayer");var currentActivity = pl_class.GetStatic<AndroidJavaObject>("currentActivity");// Get instance of UnityPlayer (hacky but will live)var pl_inst = currentActivity.Get<AndroidJavaObject>("mUnityPlayer");// Get list of camera wrappers in UnityPlayer (very hacky, will die if D becomes C tomorrow)//var list = pl_inst.Get<AndroidJavaObject>("D");var list = pl_inst.Get<AndroidJavaObject>("m");Debug.Log("--------" + list);int x = list.Call<int>("size");Debug.Log("--------"+x);if (x == 0) return null;// Get the first element of list (active camera wrapper)var cam_holder = list.Call<AndroidJavaObject>("get", 0);// get camera (this is totally insane, again if "a" becomes not-"a" one day )var cam = cam_holder.Get<AndroidJavaObject>("a");Call my setup camera routine in Android plugin  (will set params and call autoFocus)//var jc = new AndroidJavaClass("org.example.ScriptBridge.JavaClass");//jc.CallStatic("enableAutofocus", new[] { cam });return cam;}public void FlashCtrl(bool isOpenFlashOfthisCamera){AndroidJavaObject cameraManager = new AndroidJavaClass("android.hardware.camera2.CameraManager");//AndroidJavaObject Camera2Wrapper_androidClass = currentActivity.Get<AndroidJavaObject>("mUnityPlayer").Get<AndroidJavaObject>("p");//AndroidJavaObject a_androidClass = Camera2Wrapper_androidClass.Get<AndroidJavaObject>("b");//AndroidJavaObject CameraManager_androidClass = a_androidClass.GetStatic<AndroidJavaObject>("b");//string[] cameraName= a_androidClass.GetStatic<string[]>("c");//Debug.Log(CameraManager_androidClass);//Debug.Log(cameraName);//CameraManager_androidClass.Call("setTorchMode", cameraName[0], isOpenFlashOfthisCamera);AndroidJavaClass cameraManager = new AndroidJavaClass("android.os.IHardwareService");cameraManager.Call("setFlashlightEnabled",  isOpenFlashOfthisCamera);}/// <summary>/// 打开摄像头/// </summary>public void StartCamera(int cameraID,WebCamTexture webCamTexture){if (androidCamera==null){//androidCamera = new AndroidJavaClass("android.hardware.Camera").CallStatic<AndroidJavaObject>("open", cameraID);androidCamera = CrazyFocusPocus();}AndroidJavaObject surfaceTexture = new AndroidJavaClass("android.graphics.SurfaceTexture");AndroidJavaObject setPreviewTexture= androidCamera.Call<AndroidJavaObject>("setPreviewTexture", surfaceTexture);Debug.Log("摄像头预览");}public void StartFlash(){try{//AndroidJavaObject androidCamera = new AndroidJavaClass("android.hardware.Camera").CallStatic<AndroidJavaObject>("open");if (androidCamera == null){//androidCamera = CrazyFocusPocus();androidCamera = new AndroidJavaClass("android.hardware.Camera").CallStatic<AndroidJavaObject>("open");}AndroidJavaObject cameraParameter = androidCamera.Call<AndroidJavaObject>("getParameters");cameraParameter.Call("setFlashMode", new AndroidJavaObject("java.lang.String", "torch"));androidCamera.Call("setParameters", cameraParameter);androidCamera.Call("startPreview ");// androidCamera.Call("release");//释放掉,不释放其他程序无法调用摄像头}catch (AndroidJavaException e){Debug.LogError(e.StackTrace);}Debug.Log("打开闪光灯");}public void StopFlash(){try{AndroidJavaObject androidCamera = new AndroidJavaClass("android.hardware.Camera").CallStatic<AndroidJavaObject>("open");AndroidJavaObject cameraParameter = androidCamera.Call<AndroidJavaObject>("getParameters");cameraParameter.Call("setFlashMode", new AndroidJavaObject("java.lang.String", "off"));androidCamera.Call("setParameters", cameraParameter);androidCamera.Call("release");//释放掉,不释放其他程序无法调用摄像头}catch (AndroidJavaException e){Debug.LogError(e.StackTrace);}Debug.Log("关闭闪光灯");}#endregion 摄像头
}

  

转载于:https://www.cnblogs.com/Jason-c/p/10900409.html

unity 显示、隐藏Android导航栏相关推荐

  1. android导航栏隐藏与浮现

    Android M已经发布了很久了,很多新的特性也非常的吸引人,比如Doze模式可以使导航时间更长,刷到nexus5上,体验了一下确实不错.但是导航栏(虚拟按键)一直存在,感觉不是特别的爽.今天我们就 ...

  2. android——暴力隐藏底部导航栏

    最近在做平板项目,boss要求隐藏掉底部导航栏,各种谷歌百度了半天,可愁死我了.因为导航栏是系统自带的,要实现隐藏要么修改framwork层代码,要么想点别的招.本宝菜鸟一只,哪里会啥修改framwo ...

  3. Android 隐藏底部导航栏,并且Dialog 弹出时保持隐藏

    全屏显示并隐藏底部导航栏 全屏显示 可以在配置清单文件中设置,也可在代码中设置 <!-- 设置全屏显示 --><item name="android:windowFulls ...

  4. android双导航功能吗,Android导航栏隐藏与浮现(二)

    在Android导航栏隐藏与浮现(一)中已经以 Nexus5 为例,Android M 为基础介绍了怎么实现底部导航栏的隐藏与浮现,本文将介绍怎么在设置(辅助功能)中加入控制该功能的开关. Paste ...

  5. (AS笔记)Android全透明沉浸式主题样式——全屏沉浸隐藏底部导航栏

           上一章介绍了,Android全透明沉浸式主题样式--顶部状态栏+底部导航栏,教程传送门链接:         (AS笔记)Android全透明沉浸式主题样式--顶部状态栏+底部导航栏   ...

  6. ios15从隐藏系统导航栏页面进入显示系统导航栏页面后,期望系统导航栏背景色为白色,但是导航栏背景变成黑色问题

    ios15从隐藏系统导航栏页面进入显示系统导航栏页面后,期望系统导航栏背景色为白色,但是导航栏背景变成黑色问题. 经过多次分析是因为底层大背景被设置了默认颜色引起,把它设置成对应白色就可以了: sel ...

  7. Android隐藏底部导航栏三大金刚按钮

    注:非uid.system项目不用看了....避免看完尝试不行,233333 定制化项目难免会用到这种需求,要就隐藏底部导航栏,让用户不能点击,底部导航栏的3大金刚分别就是我们看到的-返回键.home ...

  8. android 导航栏位置,android手机导航栏

    /** * 设置透明状态栏与导航栏 * @param navi true不设置导航栏|false设置导航栏 */ public void setStatusBar(boolean navi) { // ...

  9. 安卓刘海屏沉浸式(内容绘制到底部,隐藏底部导航栏,状态栏背景颜色为透明)

    纯java实现(只针对比较新的版本,且没有实现字体为黑色): public class MainActivity extends AppCompatActivity {@Overrideprotect ...

最新文章

  1. Entity Framework 6 Recipes 2nd Edition(10-5)译 - 在存储模型中使用自定义函数
  2. “sudo: go:找不到命令”完美解决方案
  3. python安装步骤win10-教你如何在Win10系统安装Python?
  4. 360急速浏览器JS的调试
  5. 目标检测特殊层:PSROIPooling详解
  6. python解密_python在加密解密中的例子(尽可能去深挖)
  7. Unity4.3 遮挡剔除:基本知识
  8. java中两个xml文件内容拼接_比较Java中2个XML文档的最佳方法
  9. c++已知2点求中垂线_呆哥数学函数合集——函数的概念【2】
  10. 静态RAM六个MOS管组成1位结构图
  11. Oracle查询执行计划
  12. Hashcat密码破解
  13. 最新服务器处理器天梯,2019服务器CPU天梯图之性能排行榜(双路三路四路) - 服务器百科...
  14. 小猫盘onespace x3p系统常见操作
  15. ALM/QC11.0在win8/IE11下无法浏览
  16. 微软服务器系统突然要求密钥,买了Win10新电脑?小心微软偷走你的设备加密密钥...
  17. 联想拯救者Y700评测 怎么样
  18. 生活小妙方记录:治疗缠腰蛇
  19. Java 中 Boolean 和 boolean的默认值和修改默认值
  20. word论文排版和写作06:审阅和修改文章

热门文章

  1. java读流方式,下载网络上的图片
  2. 建立索引为什么能加快查询速度 【转】
  3. [转贴]从零开始学C++之STL(二):实现一个简单容器模板类Vec(模仿VC6.0 中 vector 的实现、vector 的容量capacity 增长问题)...
  4. ★LeetCode(784)——字母大小写全排列(JavaScript)
  5. ionic checkbox 精简用法
  6. oracle 截取指定时间戳,oracle时间函数(包括截取时间)
  7. 喝什么汤对肝脏有好处?
  8. 宿松的小孤山在安徽省内有名吗?
  9. 乔致庸晚年有白银一千万两,相当于现在多少钱?
  10. 俯首甘为孺子牛上一句是什么