GVKun编程网logo

检测 iOS / Android 操作系统(iphone检测系统软件)

12

对于检测iOS/Android操作系统感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解iphone检测系统软件,并且为您提供关于Android2.2SDK操作系统界面截屏、AndroidND

对于检测 iOS / Android 操作系统感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解iphone检测系统软件,并且为您提供关于Android 2.2 SDK 操作系统界面截屏、Android NDK GPIO 操作(pcduino 装 Android 系统)、Android Studio – 使用依赖于另一个Android库的Android库构建Android项目、android – 嵌入式系统:我应该使用哪个操作系统?的宝贵知识。

本文目录一览:

检测 iOS / Android 操作系统(iphone检测系统软件)

检测 iOS / Android 操作系统(iphone检测系统软件)

我做了一些研究,这个问题出现了,但不是我想要的方式。我正在为一个二维码登陆的客户端构建一个页面,这是一个下载应用程序的地方。所以他不必在一个页面上打印 2
个二维码,我想检测当前的操作系统(Apple/Android/Other[不支持])并根据该值修改我的元素。

我查看了脚本“detectmobilebrowsers”,它只是为了判断用户是否是移动设备,而我想弄清楚用户正在运行什么操作系统并建议最佳应用程序版本。

我发现与这个问题类似的其他答案似乎已经过时或不可靠(没有检测到 Android
平板电脑浏览器),所以我正在寻找新的东西。我怎样才能做到这一点?(最好按顺序使用 jQuery - Javascript - PHP)。

答案1

小编典典

您可以测试用户代理字符串:

/** * Determine the mobile operating system. * This function returns one of ''iOS'', ''Android'', ''Windows Phone'', or ''unknown''. * * @returns {String} */function getMobileOperatingSystem() {    var userAgent = navigator.userAgent || navigator.vendor || window.opera;    // Windows Phone must come first because its UA also contains "Android"    if (/windows phone/i.test(userAgent)) {        return "Windows Phone";    }    if (/android/i.test(userAgent)) {        return "Android";    }    // iOS detection from: http://stackoverflow.com/a/9039885/177710    if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {        return "iOS";    }    return "unknown";}

Android 2.2 SDK 操作系统界面截屏

Android 2.2 SDK 操作系统界面截屏

传说 Android 2.2 不仅在功能上有很大的提升,速度上也是通过引入 JIT 后得以非常大的改善。不过多数用户更关心的是界面好不好看,这往往是决定购买的第一因素。

以下为Android2.2 SDK开发者套件截图

Android 2.2操作系统界面截屏抢先看 Android 2.2操作系统界面截屏抢先看

主界面及菜单界面

Android 2.2操作系统界面截屏抢先看 Android 2.2操作系统界面截屏抢先看

设置菜单及本机信息

Android 2.2操作系统界面截屏抢先看 Android 2.2操作系统界面截屏抢先看

网上浏览及车载模式

下一页Android2.2与2.1界面对比
Android2.2与2.1界面对比

Android 2.2操作系统界面截屏抢先看

主界面(左为2.1 右为2.2)

Android 2.2操作系统界面截屏抢先看

设置界面(左为2.1 右为2.2)

Android 2.2操作系统界面截屏抢先看

邮件界面(左为2.1 右为2.2)

Android 2.2操作系统界面截屏抢先看

邮件界面(左为2.1 右为2.2)

更多Android2.2与2.1界面对比

Android 2.2操作系统界面截屏抢先看

邮件界面(左为2.1 右为2.2)

Android 2.2操作系统界面截屏抢先看

搜索栏(左为2.1 右为2.2)

Android 2.2操作系统界面截屏抢先看

日历界面(左为2.1 右为2.2)

Android  2.2操作系统界面截屏抢先看

GPS设置界面(左为2.1 右为2.2)

Android 2.2操作系统界面截屏抢先看

车载界面(左为2.1 右为2.2)

更多Android2.2与2.1界面对比

Android 2.2操作系统界面截屏抢先看

拍照界面(下为2.1 上为2.2)

Android 2.2操作系统界面截屏抢先看

视频界面(下为2.1 上为2.2)

Android 2.2操作系统界面截屏抢先看

软件管理界面(左为2.1 右为2.2)看到了Flash10.1

Android  2.2操作系统界面截屏抢先看

搜索界面(左为2.1 右为2.2)

Android 2.2操作系统界面截屏抢先看

Android NDK GPIO 操作(pcduino 装 Android 系统)

Android NDK GPIO 操作(pcduino 装 Android 系统)

开发工具: Eclipse
开发语言: Java 和 c++
     Pcduino 跑 Android 系统让我兴奋了很长时间,也由此幻想了很多有趣的应用。例如 结合 Yeelink 做远程加电控制;结合微信开放接口与传感器向好友推送信息等等。 当然这些有趣的应用都离不开 PCDUINO 硬件的操作。那么在 Android 系统下怎么来操作硬件呢?我想大概有以下几种方式:


1、利用 Arduino 库自己写 c++ 程序然后编译成可执行文件,然后把可执行文件拷到 PCDUINO 中,添加权限,在模拟中端里运行可执行文件。
     优点:Arduino 库函数完善,非常容易操作。
     缺点:貌似和 Android 开发的应用不能完美的结合。

2、利用 Android 的 Jni 编程,直接驱动 GPIO。
     优点:开发工具简单,利用 Eclipse 进行交叉编译,同时编译 Java 和 c++ 代码。并且把硬件操作函数生成.so 文件直接打包 APK 中。

     下面我们利用 ANDROID NDK 来开发一个简单实例: " 光电开关控制 UI 上的灯泡亮灭 "

      第一步:开发环境的搭建
                  1、安装 Eclipse
                  2、安装 ADT-v20 插件(该版本已经直接支持 Native 编程)
                  3、安装 CDT(编译 c++ 代码)
                  3、安装 android-ndk-r8e(该版本支持 Windows,不用在 Cygwin 下编译了)
       按照这种模式搭建的开发环境用起来非常上手,java 和 c++ 程序直接交叉编译,然后打包生成 APK.
      第二步:实例演练
                  1、新建 Android 工程 HelloJni,编写 Java 代码如下(定义本地函数)
                 public class MainActivity extends Activity 
            {        
                  @Override
                  protected void onCreate(Bundle savedInstanceState) 
        
              {
                super.onCreate(savedInstanceState);
                setTitle(getHelloJniData());
        
               }

                //c++ 中要实现的函数接口
                 public native String getHelloJniData();    // 从本地函数获得字符串
                 public native void OpenLed();                // 打开 LED 灯,本例子对应 GPIO3
                 public native void CloseLed();                // 关闭 LED 灯
                 public native int  ReadGpioState(int i);    // 读取某个 GPIO 的状态,然后返回给 Java 层

                 // 库载入代码
                 static
                 {
                     System.loadLibrary("Hellojni");          //Hellojni 本地 SO 库
                  }
             }
                    2、实现本地 c++ 代码
            (此处注意可以利用 javah 生成头文件,也可以自己按照 Jni 规则写)


             #define GPIO_MODE_DIR "/sys/devices/virtual/misc/gpio/mode/"
             #define GPIO_PIN_DIR "/sys/devices/virtual/misc/gpio/pin/"
             #define GPIO_IF_PREFIX "gpio"



            JNIEXPORT jstring JNICALL Java_com_hellojni_MainActivity_getHelloJniData (JNIEnv * env, jobject obj )
             
             {
                  return (*env)->NewStringUTF(env, "hello jni");
             }


              JNIEXPORT void JNICALL Java_com_hellojni_MainActivity_OpenLed (JNIEnv * env, jobject obj)   // 打开 LED
           {




                __android_log_print(ANDROID_LOG_INFO,LOG_TAG,"OPEN- LED");


                memset(path, 0, sizeof(path));
                sprintf(path, "%s%s%d", GPIO_MODE_DIR, GPIO_IF_PREFIX, 3);    // 此处对应地址 /sys/devices/virtual/misc/gpio/mode/gpio3 设置为输出
                fd = open(path, O_RDWR);
                write(fd,"1",1);
                close(fd);


                 memset(path, 0, sizeof(path));
                sprintf(path, "%s%s%d", GPIO_PIN_DIR, GPIO_IF_PREFIX, 3);         // 此处对应地址 /sys/devices/virtual/misc/gpio/pin/gpio3 设置为高定平
                fd = open(path, O_RDWR);
                write(fd,"1",1);
                close(fd);
        }


       JNIEXPORT void JNICALL Java_com_hellojni_MainActivity_CloseLed(JNIEnv * env, jobject obj) // 关闭 LED
               
       {
              __android_log_print(ANDROID_LOG_INFO,LOG_TAG,"CLOSE LED");
                memset(path, 0, sizeof(path));
                sprintf(path, "%s%s%d", GPIO_MODE_DIR, GPIO_IF_PREFIX, 3);
                fd = open(path, O_RDWR);
                write(fd,"1",1);
                close(fd);


                memset(path, 0, sizeof(path));
                sprintf(path, "%s%s%d", GPIO_PIN_DIR, GPIO_IF_PREFIX, 3);
                fd = open(path, O_RDWR);
                write(fd,"0",1);
                close(fd);
       }



       JNIEXPORT jint JNICALL Java_com_hellojni_MainActivity_ReadGpioState (JNIEnv *env, jobject obj,jint i) // 读取某个 IO 口的状态
            {
                   char buf[4];
                    int ret = -1;
                    int fd = -1;
                    int state;


                    memset((void *)buf, 0, sizeof(buf));


                    memset(path, 0, sizeof(path));
                    sprintf(path, "%s%s%d", GPIO_PIN_DIR, GPIO_IF_PREFIX, i);
                    fd = open(path, O_RDWR);
                    ret = read(fd, buf, sizeof(buf));


                    ret = buf[0] - ''0'';
                           switch( ret )
                           {
                               case 0:
                                       state=0;
                                    //   __android_log_print (ANDROID_LOG_INFO,LOG_TAG,"LOW");    返回 LOG 调试信息
                                         break;
                               case 1:
                                       state=1;
                                    //   __android_log_print(ANDROID_LOG_INFO,LOG_TAG,"HIGHT");
                                     break;
                               default:
                                       state=-1;
                                   ret = -1;
                                   break;
                           }
                      close(fd);
                             //  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,"READ GPIO STATE");
            return state;
        }



                  3、到这里关键代码就都准备好了,可以直接在 Java 层调用这些接口函数操作 IO 了。下面最后再配置一下 Eclipse 交叉编译环境。
                         
                       右击 HelloJni 的工程属性,弹出 窗口,选 Builders --->New---NDK_Builder。

 




 




 




 




 




到此开发环境搭建完毕!具体的细节哪里有问题,可以问度娘哦!!!


工程文件见附件!!!


感谢 Lucifer ㊣ (1094294) 大神的指导!!!




 hellojni.rar (985.58 KB, 下载次数: 22) 







  




Android Studio – 使用依赖于另一个Android库的Android库构建Android项目

Android Studio – 使用依赖于另一个Android库的Android库构建Android项目

我需要使用Gradle构建一个依赖于Android库项目A的Android项目,该项目取决于另一个Android库项目B.

到目前为止,我有以下内容:

Android项目:

的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android'

dependencies {
    compile project(':LibA')
}

android {
    compileSdkVersion 7
    buildToolsversion "17.0.0"
}

manifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.cyborg.template"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="7" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.cyborg.template.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Android库A:

的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android-library'

dependencies {
    compile project(':LibB')
}


android {
    compileSdkVersion 7
    buildToolsversion "17.0.0"
} 

manifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.lib.project.a"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk
            android:minSdkVersion="7"
            android:targetSdkVersion="7"/>

</manifest>

Android库B:

的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android-library'

android {
    compileSdkVersion 7
    buildToolsversion "17.0.0"
} 

manifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.lib.project.b"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk
            android:minSdkVersion="7"
            android:targetSdkVersion="7"/>

</manifest>

在尝试构建Android项目时,Android studio报告了以下错误:

Gradle: Execution Failed for task ':LibA:processDebugManifest'.
  > Manifest merging Failed. See console for more info.

那个控制台在哪里我想搜索有关错误的更多信息?

我发现了一些关于这个错误的问题,但它似乎与我的情况不一样.

启示?

谢谢,
亚当.

解决方法:

该库的清单文件当前必须具有< application />节点,即使它是空的.

这是我们将在某些时候删除的限制,但现在,只需添加它.

android – 嵌入式系统:我应该使用哪个操作系统?

android – 嵌入式系统:我应该使用哪个操作系统?

我计划构建我的嵌入式系统来处理我的吉他声音,如一个pod,带有输入和输出等等,一个带有预设的程序运行的系统,小型液晶屏幕中的选项等应该是用于导航的多点触控.

现在我刚开始,不知道从哪里开始,我应该使用什么系统.

它应该支持我上面写的功能(如多点触控)并且应该是免费的.

嵌入式Linux,
要么
Android的
或者是什么?

解决方法:

您是否使用现成的效果模块与嵌入式系统的某种接口,或者您是否计划在程序中执行效果?我在这个回复中假设后者,请澄清我是否误解了项目的性质:

你的系统工程……

您将需要处理输入和输出的模拟.甚至数字输入和输出在某些方面都是模拟的,以保持信号清洁.甚至光学也将在光学接口和处理器接口之间进行模拟.

(我知道这很长,继续阅读会收敛你问题的答案)

您将在界面中拥有某种硬件到软件数据,理想情况下,如果您选择支持不同的接口,理想情况下您需要将数据规范化为通用形式和数据速率,以便效果处理只需要以一种方式处理它. (在代码中避免一堆if-then-elses,如果比特率是那么,否则如果比特率是那么,否则……如果比特率是这个,数据是单极的话,否则如果比特率是这样,数据是双极的那么,否则……).

效果处理的内容和你想要的一样复杂,一次一个效果或多个效果?对于每个效果,定义您要允许调整的参数(我将从最小数字开始,可能是无,然后在一切正常后再添加参数).这些参数需要在某些方面或方式中是全局的,以便用户界面可以获取它们并修改它们以进行效果处理.

输出,与输入相同,大量模拟工作,从规范化数据流转换为接口想要或需要的任何东西,或者您定义它.

然后有用户界面……简单的部分.

用于效果处理的软件的内容可以是与系统无关的代码,并且在桌面/笔记本电脑上比在目标系统上开发和测试更加舒适,同时要记住代码应该是系统和操作系统独立编写的.因为写入可嵌入(避免浮点,除法,许多局部变量等).

有时,如果不经常在一个封闭的系统中,在同一个黑盒子上有某种用户界面,旋钮或按钮,某种屏幕,触摸屏等.一个系统可以管理用户界面,另一个执行任务,有一个之间的联系.并不总是,但它是一个很好的清洁设计,并允许,例如昨天设计的产品,按钮和旋钮,并说一个双线液晶面板,现代化的触摸屏,只需一小部分的努力,明天的某个时候那里可能是一些光纤直接插入你脑后的插座,谁知道呢.

分离处理任务的另一个原因是,更容易确保效果处理器永远不会被用户界面的东西陷入困境.你不想在你的触摸屏上转动一个虚拟旋钮,并且图形加载以绘制图片会导致你的音频变得乱码或变成讨厌的呜呜声.基本上效果处理器是实时关键的.你不想在吉他上拾取琴弦,并在三秒钟之后将声音从放大器中取出,因为处理器也在你的触摸屏面板上绘制了一个动画背景.这种处理需要紧密,快速和确定性,代码中的每个if-then-else都必须被考虑和平衡.如果您允许多个并行效果,您的处理器需要能够有带宽来处理所有效果而不会有明显的延迟,否则如果一次只有一个效果,那么需要选择处理器来处理一个效果最糟糕的计算工作.可能发生的最坏情况是输入到输出延迟因gui处理正在做的事情而变化,导致音乐听起来很糟糕.

因此,您可以使用其用户界面来处理效果处理器,例如,串行接口和该接口(您定义的)上的协议,用于选择效果和更改参数.您可以使用通过串行接口连接的桌面和/或笔记本电脑启动效果处理器并进行工作和测试,其中一些特殊代码用于更改参数,可能是命令行程序.

现在是它变得有趣的地方.你可以得到一个现成的嵌入式linux系统或嵌入式android或者其他什么,编写你的使用串行协议的app,如果需要胶水,螺栓,磁带,模具等这个用户界面系统在上面,旁边效果处理器模块.请注意,您可以拥有所有建议的平台,一个Android版本,一个Linux(没有Android)版本,一个Mac版本,一个Windows版本,一个DOS版本,一个qnx版本,一个amiga版本,你可以命名它.您可以在同一个操作系统上尝试100种不同的用户界面变体,也许我希望旋钮是滑块,或者上/下按钮,或者我使用双指触摸旋转的表盘,或其他一些多点触控手势.

它变得更好,而不是串行或除了串行之外你可以使用蓝牙模块.您的用户界面可以是iPhone应用程序,或Android手机应用程序,或笔记本电脑Linux或Windows应用程序.或者你的桌面计算机等.所有这些都是(相对)简单的平台,用于编写图形用户界面来选择东西.

当然,另一种方法可能是以太网,特别是无线以太网,那么您的用户界面可能是一个网页,而您的大部分用户界面工作已由firefox或chrome或其他团队完成. (无线以太网或蓝牙或zigbee或其他允许效果处理器在某个方便的地方,并且不必在你的手臂/脚的范围内).

做你的系统工程.将问题分解为几个大模块,定义模块之间的接口,然后在必要时在这些模块中担心系统工程,直到您获得易于消化的咬合.系统工程越好,模块之间的接口越好定义,项目就越容易实现.

我还会调查xmos上的xcore处理器,他们有一个非常好的模拟器,带有vcd波形输出,你也可以使用它来准确地分析你的效果处理.就个人而言,我很难为这个项目选择这个平台.

您还应该从ti调查omap,这是beagleboard上的内容.你得到一个很好的手臂,已经有linux和其他东西移植并运行,但你也得到一个dsp块,dsp块可以做你的效果处理,并可能以两个不干涉的方式.你失去了在物理上分离你的用户界面处理器和效果处理器的能力,但在别处获得了,并且可能使用现成的beagleboard来开发原型(使用模拟音频输入和输出).我实际上更喜欢hawkboard(使用hawkboard你可以获得一个可用的系统开箱即用,beagleboard你花了另一个berapeboard值钱的东西本应该在板上),但最后我看到他们有一个不稳定的缺陷与pcb设计.

我不喜欢这些规格,但tegra(一些即将推出的手机已经或将要以tegra为基础),就像omap一样,应该提供一些平行处理,以及对音频/视频和gui的精益.你只需要音频和gui(三个中更容易的两个).我认为有一个销售的开发平台,它有一个触摸屏和流行的嵌入式操作系统.

如果你想省钱,你可以自己制作这些东西.现在停下来去商店买一个.即使所有的设计都是免费的,自制软件也会花费更多.硬件和熔化的吉他和吉他放大器不是.我从经验中说,很多时候我在自制项目上花费了数千美元,以避免购买一些现成的300美元的物品.我学到了很多东西,而且个人建造这件东西比使用它更有趣,我通常在它最终工作后搁置它.因人而异

如果我误解了您的问题,请告诉我,我将使用不同的(简短)答案编辑/删除/替换所有问题.

关于检测 iOS / Android 操作系统iphone检测系统软件的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android 2.2 SDK 操作系统界面截屏、Android NDK GPIO 操作(pcduino 装 Android 系统)、Android Studio – 使用依赖于另一个Android库的Android库构建Android项目、android – 嵌入式系统:我应该使用哪个操作系统?等相关知识的信息别忘了在本站进行查找喔。

本文标签: