学习雷锋,好榜样,接下来的这一系类教程里,将通过unity来实现Android端的一些常用功能,

不需要在 Asset/Plugins/Android 目录下引用jar包或者aar包,这是重点。

 using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Volume : MonoBehaviour { private const string currentVolume = "getStreamVolume";//当前音量
private const string maxVolume = "getStreamMaxVolume";//最大音量 private const int STREAM_VOICE_CALL = ;
private const int STREAM_SYSTEM = ;
private const int STREAM_RING = ;
private const int STREAM_MUSIC = ;
private const int STREAM_ALARM = ;
private const int STREAM_NOTIFICATION = ;
const int STREAM_DTMF = ; //创建几个 "3D Text" 用于接收音量值
public TextMesh STREAM_VOICE_CALL_Text;
public TextMesh STREAM_SYSTEM_Text;
public TextMesh STREAM_RING_Text;
public TextMesh STREAM_MUSIC_Text;
public TextMesh STREAM_ALARM_Text;
public TextMesh STREAM_NOTIFICATION_Text;
public TextMesh STREAM_DTMF_Text; private static AndroidJavaObject audioManager; void Awake()
{
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
audioManager = currentActivity.Call<AndroidJavaObject>("getSystemService", new AndroidJavaObject("java.lang.String", "audio"));
}
void Update()
{
// //current volume value
// STREAM_VOICE_CALL_Text.text = audioManager.Call<int> (currentVolume, STREAM_VOICE_CALL).ToString ();
// STREAM_SYSTEM_Text.text = audioManager.Call<int> (currentVolume, STREAM_SYSTEM).ToString ();
// STREAM_RING_Text.text = audioManager.Call<int> (currentVolume, STREAM_RING).ToString ();
// STREAM_MUSIC_Text.text = audioManager.Call<int> (currentVolume, STREAM_MUSIC).ToString ();
// STREAM_ALARM_Text.text = audioManager.Call<int> (currentVolume, STREAM_ALARM).ToString ();
// STREAM_NOTIFICATION_Text.text = audioManager.Call<int> (currentVolume, STREAM_NOTIFICATION).ToString ();
// STREAM_DTMF_Text.text = audioManager.Call<int> (currentVolume, STREAM_DTMF).ToString (); //Max volume value
STREAM_VOICE_CALL_Text.text = audioManager.Call<int> (maxVolume, STREAM_VOICE_CALL).ToString ();
STREAM_SYSTEM_Text.text = audioManager.Call<int> (maxVolume, STREAM_SYSTEM).ToString ();
STREAM_RING_Text.text = audioManager.Call<int> (maxVolume, STREAM_RING).ToString ();
STREAM_MUSIC_Text.text = audioManager.Call<int> (maxVolume, STREAM_MUSIC).ToString ();
STREAM_ALARM_Text.text = audioManager.Call<int> (maxVolume, STREAM_ALARM).ToString ();
STREAM_NOTIFICATION_Text.text = audioManager.Call<int> (maxVolume, STREAM_NOTIFICATION).ToString ();
STREAM_DTMF_Text.text = audioManager.Call<int> (maxVolume, STREAM_DTMF).ToString (); }
}

Unity 调用 Android Native 方法(一) 获得Android系统音量的更多相关文章

  1. UNITY调用安桌方法出现 JNI: Init'd AndroidJavaClass with null ptr!

    UNITY调用安桌方法出现 JNI: Init'd AndroidJavaClass with null ptr! 原因是····· 得运行在一个真正的Android设备上! 得运行在一个真正的And ...

  2. unity调用c++ dll方法介绍

    摘要 unity用的很普遍,现在很多代码还是用c++写的,需要用unity去调用c++的代码.这里介绍了一种unity调用c++ dll的方法,希望有所帮助. 我采用的软件是Visual Studio ...

  3. unity调用摄像头的方法

    http://blog.csdn.net/cocoa_china/article/details/10527995 using UnityEngine; using System.Collection ...

  4. Android Native jni 编程入门

    在某些情况下,java编程已经不能满足我们的需要,比如一个复杂的算法处理,这时候就需要用到jni(java native interface)技术: jni 其实就是java和c/cpp之间进行通信的 ...

  5. 第48篇-native方法调用解释执行的Java方法

    举一个native方法调用解释执行的Java方法的实例,如下: public class TestJNI { static { System.load("/media/mazhi/sourc ...

  6. 【Android 应用开发】对Android体系结构的理解--后续会补充

    1.最底层_硬件 任何Android设备最底层的硬件包括 显示屏, wifi ,存储设备 等. Android最底层的硬件会根据需要进行裁剪,选择自己需要的硬件. 2.Linux内核层 该层主要对硬件 ...

  7. JNI/NDK开发指南(二)——JVM查找java native方法的规则

    通过第一篇文章,大家明白了调用native方法之前,首先要调用System.loadLibrary接口加载一个实现了native方法的动态库才能正常访问,否则就会抛出java.lang.Unsatis ...

  8. JNI-Thread中start方法的调用与run方法的回调分析

    前言 在java编程中,线程Thread是我们经常使用的类.那么创建一个Thread的本质究竟是什么,本文就此问题作一个探索. 内容主要分为以下几个部分 1.JNI机制的使用 2.Thread创建线程 ...

  9. 第45篇-查找native方法的本地实现函数native_function

    在之前介绍为native方法设置解释执行的入口时讲到过Method实例的内存布局,如下: 对于第1个slot来说,如果是native方法,其对应的本地函数的实现会放到Method实例的native_f ...

随机推荐

  1. jQuery学习(六)——使用JQ完成省市二级联动

    1.JQ的遍历操作 方式一: 1 $(function(){ //全选/全不选 $("#checkallbox").click(function(){ var isChecked= ...

  2. Elasticsearch的Groovy Script自定义评分检索

    需求:以索引中的boostapp列作为评分的基础分值,同时根据carpublishtime(数据的刷新时间字段)按时间进行衰减. 基于Groovy脚本实现. 1.query脚本方式: { " ...

  3. cuda float atomic操作

    atomic add.用第二个,暂时还没弄明白 #ifdef FLOAT #define T float #else #define T int #endif #ifdef FORUM __devic ...

  4. oracle11g文件系统库迁移到ASM库上面

    最近把oracle11g的文件系统库迁移到了asm库上面. 迁移过程大致如下: 最少停机方案: 实例joinpay02 | |数据库joinpay02 需要改动的文件: 数据文件 控制文件 redo文 ...

  5. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  6. js Date() 时间函数处理 关于 toLocaleDateString()

    toLocaleDateString()方法的真正含义为「根据本地时间把Date对象的日期部分转换为字符串」,这意味着:在不同的浏览器或者服务器中,我们可能得到不同的字符串. 例如,将 Chrome ...

  7. oracle和mysql的分页

    如果我们是通过JDBC的方式访问数据库,那么就有必要根据数据库类型采取不同的SQL分页语句,对于MySql数据库,我们可以采用limit语句进行分页,对于Oracle数据库,我们可以采用rownum的 ...

  8. 【codeforces 816B】Karen and Coffee

    [题目链接]:http://codeforces.com/contest/816/problem/B [题意] 给你很多个区间[l,r]; 1<=l<=r<=2e5 一个数字如果被k ...

  9. Spring MVC 的 研发之路 (二)

    二.web.xml的简单配置介绍1 1.启动Web项目时,容器回去读web.xml配置文件里的两个节点<context-param>和<listener> 2.接着容器会创建一 ...

  10. 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍

    **************************************************************************************************** ...