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_ANDROID
currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
currentActivity.Call<AndroidJavaObject>("getWindow").Call("clearFlags", 2048); }));
#endif
Debug.Log("hide status bar");
} /// <summary>
/// 显示上方状态栏
/// </summary>
public void ShowStatusBar()
{
#if UNITY_ANDROID
currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
currentActivity.Call<AndroidJavaObject>("getWindow").Call("addFlags", 2048);// WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN
}));
#endif
Debug.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.LayoutParams
if (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;
#endif Debug.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;
#endif
Debug.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 摄像头
}

  

unity 显示、隐藏Android导航栏的更多相关文章

  1. iOS UITableView表视图滚动隐藏UINavigationController导航栏

    UITableView 继承于UIScrollView 所以UIScrollView 的代理方法相同适用于UITableView 中 隐藏导航栏的方法为: self.navigationControl ...

  2. phpcmsv9如何实现添加栏目时不在首页内容区显示只在导航栏显示

    之前王晟璟一直使用PHPCMSV9系统建过自己的个人门户网站,同时也建立了一个其他类型的网站,感觉非常不错,我不得不说PHPCMSV9的功能非常齐全,非常强大. 但有一点时常让王晟璟感到很烦脑,那就是 ...

  3. 极简操作无需root隐藏S8导航栏和状态栏

    距离三星Galaxy S8国行发布快一个礼拜了,相信论坛不少小同伴已经拿到手,许多人和我一样被那块全视曲面屏给诱惑剁手的,当拿到手把玩一段时间后却發现这么美的一块屏幕居然大部分应用上下都有一行碍眼的状 ...

  4. Dedecms丨显示指定的导航栏

    代码实例: {dede:channelartlist type='top' typeid='9,12,10' row='3' orderby='sortrank'}<li><a hr ...

  5. 控制器全屏显示.不展示导航栏navigationbar

    有些时候需要 让控制器全屏显示 ,不需要导航栏,或者说是在导航栏底部 基本情况: >控制器全屏 ``` if (@available(iOS 11.0, *)) { self.tableView ...

  6. react-native react-navigation StackNavigator android导航栏 标题下居中

    navigationOptions:({ navigation }) => ({ , textAlign:'center' }}) 如上设置即可,如果有返回箭头,那么右边也要加一个 占位的或者设 ...

  7. Android导航栏ActionBar的具体分析

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/39378825 关于ActionBar,相信大家并不陌生,可是真正能够熟练使用的也不是许多,这 ...

  8. ionic 进入多级目录以后隐藏底部导航栏(tabs)(完美解决方案)

    公司开始使用ionic开发项目,在此记录下把遇到的问题,网上有大牛已经把解决方法整出来了,不过记录在自己这里方便查阅. 这篇记录在有tabs的项目里,进入子层级时,底部导航还一直存在,本人是要让他只在 ...

  9. js制作点击会自动隐藏的导航栏(固定在在头部的)

    想必大家应该见过这样的特效,本来头部是固定在网页的最上方的,点一下缩进去,再点一下 又可以缩回来,这种效果怎么实现的呢,我今天就做了一个.菜鸟勿喷. @charset "utf-8" ...

随机推荐

  1. 设置ssh会话过期时间

    客户端配置选项: 编辑配置文件 ~/.ssh/config 加入以下配置项,如不存在新建一个即可: Host * ServerAliveInterval 300 ServerAliveCountMax ...

  2. SpringBoot2整合activiti6环境搭建

    SpringBoot2整合activiti6环境搭建 依赖 <dependencies> <dependency> <groupId>org.springframe ...

  3. oracle 创建自增主键

    1.创建表 create table Test_Increase( userid number(10) NOT NULL primary key, /*主键,自动增加*/ username varch ...

  4. 【hihocoder 1308】搜索二·骑士问题

    [题目链接]:http://hihocoder.com/problemset/problem/1308 [题意] [题解] 用bfs处理出3个骑士到每个点的最短路; 然后枚举最后3个骑士到了哪一个点. ...

  5. PHP学习总结(7)——PHP入门篇之PHP注释

    注释 在PHP中也有注释语句:用双斜杠(//)来表示.其它语言中,Html中使用<!--注释语句-->,CSS中使用/*注释语句*/.如下面代码: <?php//输出hi,imooc ...

  6. Tensorflow MNIST 数据集测试代码入门

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50614444 测试代码已上传至GitH ...

  7. MySQL 存储

    1.存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户 ...

  8. iOS_21团购_地图功能

    终于效果图: 右下角的回到用户位置button: MapController控制器, 是主控制器左側dock上面的[地图]button相应的控制器, 继承自ShowDealDetailControll ...

  9. win7-32虚拟机安装

    前置条件:安装好VMware-workstation 一.本人本机win7—32位 准备win7_32位镜像文件GSP1RMCULFRER_CN_DVD.iso 新建一个文件夹,将它保存在我们的新建文 ...

  10. ContextMenu的使用具体解释

    二话不说,先上图: 能够非常easy看到这是一个类似于Dialog悬浮在活动上的控件,它是由被注冊的view长按所触发的. 当然啦,也有其它的实现方式,这里就先介绍一下系统的ContextMenu:( ...