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. 《黑白团团队》第八次团队作业:Alpha冲刺 第二天

    项目 内容 作业课程地址 任课教师首页链接 作业要求 团队项目 填写团队名称 黑白团团队 填写具体目标 认真负责,完成项目 团队项目Github仓库地址链接. 第二天 日期:2019/6/16 成员 ...

  2. 【 AIM Tech Round 5 (rated, Div. 1 + Div. 2) C】Rectangles

    [链接] 我是链接,点我呀:) [题意] 给你n个矩形. 让你找出一个点(x,y) 使得这个点在其中至少(n-1)个矩形中. [题解] 若干个矩形交在一起的话. 它们所有的公共区域也会是一个矩形. 这 ...

  3. [using_microsoft_infopath_2010]Chapter10 与SharePoint Designer工作流集成

    本章概要: 1.创建工作流集成表单 2.允许工作流手动触发 3.创建自定义动作按钮 4.使用人物设计器 5.维护工作流人物表单

  4. xcode对照两个分支中同一个文件

    对于同一个项目的两个分支,由于两个分支可能各自都做了一些改动.所以通过Source Control中的History...功能是无法查看的.例如以下图: 这个时候.我们须要用到xcode的另外一个功能 ...

  5. COCOS2DX 3.0 优化提升渲染速度 Auto-batching

    COCOS2DX 3.0 优化提升渲染速度 Auto-batching 近期在看COCOS2DX 3.0的Auto-batching合批与Auto Culling动态缩减功能以下就来细致看看吧:整合好 ...

  6. httpurlconnection get String

    public static String getJSON(String url, int timeout) { HttpURLConnection c = null; try { long reque ...

  7. 2015.05.12,外语,读书笔记-《Word Power Made Easy》 15 “如何谈论不同人的特点” SESSION 45

    TEASER PREVIEW 以-ous结尾的,描绘某人特点的词语包括: fawning(['fɔ:niŋ] adj.奉承的),servilely(['sә:vail] adj. 卑屈的, 奴隶的) ...

  8. Blur 算法 (Unity 5.0 Shader)

    一:简单 Blur 算法 一个像素的颜色值由其邻近的若干像素和自己的颜色值的平均值重新定义,以此达到模糊的效果. 如下图,红色的像素点的值将由它和它周围的24个像素的平均值重新定义.计算的范围一般由一 ...

  9. pyspark MLlib踩坑之model predict+rdd map zip,zip使用尤其注意啊啊啊!

    Updated:use model broadcast, mappartition+flatmap,see: from pyspark import SparkContext import numpy ...

  10. hdoj--2120--Ice_cream's world I(并查集判断环)

    Ice_cream's world I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...