精华内容
下载资源
问答
  • 安卓一般使用Java开发,重新学习比较麻烦,这篇文档介绍了使用C语言开发安卓android)系统的步骤及方法,内容比较详细,很有借鉴意义。
  • 权限信息· android.permission.RECEIVE_USER_PRESENT· com.xl.capp.permission.XGPUSH_RECEIVE· 录音· 与蓝牙设备配对· 访问蓝牙设置· 大致位置(基于网络)· 查看WLAN连接· ...· com.android.launcher.per...

    权限信息

    · android.permission.RECEIVE_USER_PRESENT

    · com.xl.capp.permission.XGPUSH_RECEIVE

    · 录音

    · 与蓝牙设备配对

    · 访问蓝牙设置

    · 大致位置(基于网络)

    · 查看WLAN连接

    · com.android.launcher.permission.READ_SETTINGS

    · com.android.launcher.permission.WRITE_SETTINGS

    · com.android.launcher.permission.INSTALL_SHORTCUT

    · com.android.launcher.permission.UNINSTALL_SHORTCUT

    · 防止手机休眠

    · 控制振动

    · android.permission.READ_APN_SETTINGS

    · 读取您的USB存储设备中的内容

    · 完全的网络访问权限

    · 查看网络连接

    · 读取手机状态和身份

    · 修改或删除您的USB存储设备中的内容

    · 在其他应用之上显示内容

    · 精确位置(基于GPS和网络)

    · 更改网络连接性

    · 控制近距离通信

    · android.permission.REQUEST_INSTALL_PACKAGES

    · 连接WLAN网络和断开连接

    · android.permission.INSTALL_PACKAGES

    · 检索正在运行的应用

    · org.simalliance.openmobileapi.SMARTCARD

    · 关闭其他应用

    展开全文
  • 实战:学生信息系统学习过程:指针被称为C语言的灵魂,认识并熟练运用指针是很有必要的。在学习完指针和结构体后,便可以着手开始写一个学生信息系统的程序,通过该项目实战能够将相关知识进行巩固。技术1.指针:和...

    学习目的

    1.指针和结构体

    2.实战:学生信息系统

    学习过程:

    指针被称为C语言的灵魂,认识并熟练运用指针是很有必要的。在学习完指针和结构体后,便可以着手开始写一个学生信息系统的程序,通过该项目实战能够将相关知识进行巩固。

    技术

    1.指针:和地址及内存密切相关,指针变量用来存储地址,通过指针可以进行间接访问。在我看来,指针和基本变量、函数均为表层使用,本质操作均是对于地址的。

    1)使用指针可以解决跨区域(不同作用域  不同代码块)之间的数据交互问题,例如某函数要操作某一数据,可不通过返回值而运用指针来实现。

    2)“*”符号在声明/定义变量的时候表示一个指针变量。

    3)“*”符号在使用是表示访问“*”内地址所代表的值。

    4)‘&’ 取某个变量的地址。

    5)指针变量本身在内存里面占据8个字节内存空间。

    eg:

    int a =1;   //定义普通变量

    int *p;       //定义指针变量

    p = &a;     //取a变量的地址,并将其赋值给p指针(指针指向a)

    *p = 2;      //采用简洁操作,更改a的值

    注意:1>定义指针变量的时候一定要给初值,不确定就给NULL,不能出现“野指针”;NULL指向内存的起始地址。

    2>指针变量只能存地址,不能存具体值,且指针存地址类型要与值类型相同。

    3>数组和指针的差别在于,数组定义后即分配好了存值内存空间,而指针仅有自身的内存空间并无存值内存空间,且数组名不是一个变量,没有分配内存空间。

    3.动态分配内存:自定义申请内存,常用函数为,malloc() realloc() free()

    779d69b54e82

    代码实现--动态分配内存

    注意:自己分配的内存空间必须自己释放,用free函数;普通变量的内存是系统自己分配的,所以系统自己负责释放。

    4.结构体:是一种自定义的数据类型,可以包括多种基本数据类型。使用结构体可以解决某个变量含有多个描述参数的问题,比如,学生信息管理系统。

    779d69b54e82

    代码实现--定义结构体

    5.文件操作:在之前写的程序中,存储的数据在下一次重启程序时会刷新重置,为了能二次使用程序数据,这里用文件操作来完成。

    779d69b54e82

    代码实现--文件操作

    6.实战:学生信息系统

    感悟

    经过五天的C语言学习,我将大致的知识点系统的重塑了一遍,整理了一遍。在这个过程中,我发现,虽然困难重重,但是饶有乐趣,特别是苦思冥想许久的代码实现的那一瞬间。其实,知识的学习是其次的,更重要的是思维上的锻炼,这对后面的Android的开发是大有裨益的。C语言的航程已经告一段落,接下来,继续加油吧。

    展开全文
  • Android系统下C语言hello world

    万次阅读 2017-12-21 22:59:42
    android上运行c编写的helloword 一般情况下Android系统应用程序都是java编写APK,如果要重用C代码,也是通过JNI,调用C库。  也许有人会和我有一样的想法既然android是基于linux的内核的,那应该也可以直接运行C...

    在android上运行c编写的helloword

      一般情况下Android系统应用程序都是java编写APK,如果要重用C代码,也是通过JNI,调用C库。
      也许有人会和我有一样的想法既然android是基于linux的内核的,那应该也可以直接运行C编写的二进制呢?很显然是可以的。
      当我们手机用USB线连接到电脑,电脑安装adb工具,手机也允许电脑调试就可以通过adb shell 进入android 。linux常用命令如:cd ls,也可以使用。这些程序就是android系统中C语言编写的程序了 。

    我们在linux下编写一个hello.c如下:
    
    #inlcude<stdio.h>
    
    int main()
    {
        printf("hello world \n");
        return 0;
    }
    在linux下通过gcc -o hello hello.c 编译生成hello的可执行文件,./hello打印出了hello world。
    

      我假想它在andorid 也能运行,adb push到到手机上,chmod 755 hello修改可执行权限。执行./hello 出现了错误not executable: magic 7F45。原来我们编译环境是x86编出来的二进制只能在x86cpu上运行而android系统的是arm架构cpu的。所以我要编译arm架构二进制,编译环境和运行环境不同的编译,我们也叫做交叉编译。
      废了九牛二虎的力气我下载arm的交叉编译,结果没有库文件 不能使用printf函数,编译不通过。遇到问题解决呗,本来可以直接下载一个标准库就行,为了方便我直接下载了一个arm-linux的交叉编译工具。
      继续gcc -o hello hell.c 生成了arm下二进制文件,一波操作传输到android 修改权限,满怀希望的 ./hello 结果大失所望No such file or directory 这又是什么意思呢。百度一顿搜。
      原来是这样啊。android下的c标准库的 linux下使用的C标准库和android下使用的库不是一样的。linux使用的glibc而在andorid下google没有使用linux的glib自己实现了一个比glib更小
    更快的bionic C标准库,最重要的是android下linker链接器和linux的不一样。linker主要是用来加载库文件到内存的。
      显然我知道了原因了执行程序的时候到去找库文件的时候没有找到就打印这句话。
      这里有两种解决办法
      1.直接将hello程序静态编译arm二进制让他不依赖库
         gcc -o hello helllo.c -static
       编译完成后我们发现二进制大了很多,printf函数编译二进制不再依赖库函数了 在android下执行成功打印hello world 真是不容易终于成功了 。
     
    2.使用andorid下库和linker
    下载android NDK 使用它来编译 用这个编译很多好处还可以使用android的日志模块
      arm-linux-androideabi-gcc.exe -o hello  hell.c  –sysroot=”D:\NDK\platforms\android-19\arch-arm”
    这样编译出来的二进制能使用andorid C标准库文件大小也最合适 目前google推荐的也是这种方式。 
      
      程序发布加上优化参数  在使用strip 来去掉调试信息减少二进制大小。
      
      最后总结:虽然是个简单的hello的hello world程序,但让我加深了交叉编译理解,了解操作系统加载库的过程。

    展开全文
  • APP软件目标: 1、只提供全国计算机等级考试二...3、搭建一个纯粹二级C语言考试学习环境,让大家更熟悉C语言、理解C语言、掌握C语言,确保学习效果; 4、提供7x4小时在线答疑,及时解决学习中疑难问题,保证学习质量。
  • 本页概述了 NDK 中包含的库,并提供了指向 NDK API 参考文档中相关...如果您使用的是 ndk-build:将库添加到 Android.mk 中的 LOCAL_LDLIBS。请注意,您需要将前导 lib 替换为 -l。例如,若要链接到 libfoo 和 libb...

    本页概述了 NDK 中包含的库,并提供了指向 NDK API 参考文档中相关部分的链接,以及指向这些参考文档所在指南的链接。

    使用原生 API

    请执行以下两个步骤,以便使用 NDK 提供的库:

    通知构建系统链接到库。

    如果您使用的是 ndk-build:将库添加到 Android.mk 中的 LOCAL_LDLIBS。请注意,您需要将前导 lib 替换为 -l。例如,若要链接到 libfoo 和 libbar,您需要采用:makefile

    LOCAL_LDLIBS := -lfoo -lbar

    如需详细了解 LOCAL_LDLIBS,请参阅 Android.mk docs 文档。

    如果您使用的是 CMake:请按照 Studio 的添加 NDK API 文档中的说明操作。

    使用 #include 包含代码中的相应头文件。

    Core C/C++

    C 库

    和 等标准 C11 库头文件照常提供。

    请注意,与 Linux 不同,在 Android 上不存在单独的 libpthread 或 librt 库。该功能直接包含在 libc 中,无需显式链接。

    数学函数有单独的 libm(遵循通行的 Unix 传统),但像 libc 一样,它会由构建系统自动链接。

    提供 中的 dlopen(3) 和 dlsym(3) 等动态链接器功能,但您必须显式链接到 libdl。

    库:libc/libm/libdl

    C++ 库

    提供 C++17 支持。如需了解详情,请参阅 C++ 库支持。

    日志记录

    包含用于记录到 logcat 的 API。

    注意: 仅提供日志记录基元。如需更多可用 API 的示例,请参阅 Android 的 log/log.h 和 android-base/logging.h。

    从 API 级别 3 开始提供。

    库:liblog

    参考文档:日志记录

    跟踪记录

    原生跟踪 API 可提供相当于 Java 编程语言中 android.os.Trace 类的原生类。此 API 通过将跟踪事件写入系统跟踪缓冲区,让您能够跟踪代码中的指定工作单元。接下来,您便可以使用 Systrace 工具来收集和分析跟踪事件。

    从 API 级别 23 开始提供。

    库:libandroid

    zlib 压缩

    您可以通过添加 并链接到 libz 来使用 Zlib 压缩库。

    从 API 级别 3 开始提供。

    库:libz

    图形

    OpenGL ES 1.0 - 3.2

    标准 OpenGL ES 1.x 头文件( 和 )、2.0 头文件( 和 )、3.0 头文件( 和 )、3.1 头文件( 和 )和 3.2 头文件( 和 )包含 OpenGL ES 所必需的声明。

    如需使用 OpenGL ES 1.x,请将您的原生模块链接到 libGLESv1_CM。

    如需使用 OpenGL ES 2.0,请将您的原生模块链接到 libGLESv2。

    如需使用 OpenGL ES 3.x,请将您的原生模块链接到 libGLESv3。

    所有基于 Android 的设备均支持 OpenGL ES 1.0 和 2.0。

    只有具备所需 GPU 的 Android 设备才完全支持更高版本的 OpenGL ES,但库存在于支持引入相应库的 API 级别的所有设备上。链接到库是安全的,但应用必须查询 OpenGL ES 版本字符串和扩展字符串,以确定当前设备是否支持其需要的功能。如需了解如何执行此查询,请参阅 OpenGL 规范中的 glGetString() 说明。

    此外,您必须在清单文件中放置一个 标记,以指明您需要的 OpenGL ES 版本。

    OpenGL ES 1.0 从 API 级别 4 开始提供。

    OpenGL ES 2.0 从 API 级别 5 开始提供。

    OpenGL ES 3.0 从 API 级别 18 开始提供。

    OpenGL ES 3.1 从 API 级别 21 开始提供。

    OpenGL ES 3.2 从 API 级别 24 开始提供。

    EGL

    EGL 通过 和 头文件提供原生平台接口,用于分配和管理 OpenGL ES 上下文和 Surface。

    EGL 可让您通过原生代码执行以下操作:

    列出支持的 EGL 配置。

    分配和释放 OpenGL ES Surface。

    创建和销毁 OpenGL ES 上下文。

    切换或翻转 Surface。

    从 API 级别 9 开始提供。

    库:libEGL

    Vulkan

    Vulkan 是用于高性能三维图形渲染的低开销、跨平台 API,并且是一种由 Khronos Group 维护的开放式标准。标准 头文件包含从代码执行 Vulkan 渲染调用所需的声明。

    Vulkan 库存在于支持 API 级别 24 或更高版本的所有设备上,但应用在运行时必须检查是否具备必要的 GPU 硬件支持。不支持 Vulkan 的设备不会从 vkEnumeratePhysicalDevices 返回任何设备。

    从 API 级别 24 开始提供。

    库:libvulkan

    位图

    libjnigraphics 库会公开允许访问 Java Bitmap 对象的像素缓冲区的 API。工作流如下:

    调用 AndroidBitmap_getInfo() 以检索信息,例如指定位图句柄的宽度和高度。

    调用 AndroidBitmap_lockPixels() 以锁定像素缓冲区并检索指向它的指针。这样做可确保像素在应用调用 AndroidBitmap_unlockPixels() 之前不会移动。

    对像素缓冲区进行相应修改,以使其符合相应像素格式、宽度和其他特性。

    调用 AndroidBitmap_unlockPixels() 以解锁缓冲区。

    从 API 级别 8 开始提供。

    库:libjnigraphics

    同步 API

    自 API 级别 26 开始提供。

    库:libsync

    相机

    原生相机 API 可执行精细的照片拍摄和处理。与 Java camera2 API 不同,原生相机 API 不支持已弃用的相机 HAL 1.0 实现(即原生相机 API 中的可用相机列表不会列出达到 LEGACY 硬件级别的相机设备)。

    从 API 级别 24 开始提供。

    库:libcamera2ndk

    媒体

    libmediandk

    媒体 API 提供类似于 MediaExtractor、MediaCodec 和其他相关 Java API 的低层级原生接口。

    库:libmediandk

    OpenMAX AL

    Android 原生多媒体处理基于 Khronos Group OpenMAX AL 1.0.1 API。

    标准 OpenMAX AL 头文件 和 包含从 Android 原生端执行多媒体输出所需的声明。

    OpenMAX AL 的 NDK 分发还提供 Android 专用扩展指令集。如需了解这些扩展指令集,请参阅 中的注释。

    从 API 级别 14 开始提供。

    库:libOpenMAXAL

    Android 原生应用 API

    API 包括:

    库:libandroid

    库:libnativewindow,用于更新的原生窗口功能

    硬件缓冲区 API

    您可以借助两个原生 API 来针对跨进程缓冲区管理创建自己的流水线。

    您可以利用原生硬件缓冲区 API () 直接分配缓冲区,以针对跨进程缓冲区管理创建自己的流水线。您可以分配 AHardwareBuffer,并将其用于通过 eglGetNativeClientBufferANDROID 扩展指令集获取 EGLClientBuffer 资源类型。您可以将该缓冲区传递到 eglCreateImageKHR,以创建 EGLImage 资源类型,随后此资源类型可能会在支持的设备上通过 glEGLImageTargetTexture2DOES 与纹理绑定。此方法可用于创建可跨进程共享的纹理。

    您可以利用原生硬件缓冲区 JNI API () 获取一个 HardwareBuffer 对象(这是一个 Parcelable 对象),以便在两个不同进程之间传输。如此,您的应用可获得与 SurfaceFlinger 相似的功能;例如,在不同进程之间创建自己的缓冲区队列,而无需访问内部 Android API。

    音频

    注意:开发者应考虑使用开源 Oboe 库,这个库可在 GitHub 上获得。Oboe 是一个 C++ 封装容器,提供与 AAudio 非常相似的 API。该封装容器在 AAudio 可用时对其进行调用,并在 AAudio 不可用时回退到 OpenSL ES。

    AAudio

    AAudio 是当前支持的原生音频 API。它替换了 OpenSL ES,能更好地支持需要低延迟音频的高性能音频应用。

    自 API 级别 26 开始提供。

    库:libaaudio

    OpenSL ES

    OpenSL ES 是另一个原生音频 API,它也受支持,但请参阅下面的“指南”中的说明。

    从 API 级别 9 开始提供。API 级别 14 增加了 PCM 支持。

    库:libOpenSLES

    Neural Networks API

    Neural Networks API (NNAPI) 为应用提供适用于设备端机器学习操作的硬件加速功能。此 API 支持在设备上创建、编译和执行模型。应用通常不会直接使用 NNAPI;相反,API 将通过机器学习库、框架和工具进行调用,以便开发者在 Android 设备上训练并部署其模型。

    从 API 级别 27 开始提供。

    库:libneuralnetworks

    展开全文
  • C语言二级安卓

    2015-05-31 13:58:12
    C语言二级是Android客户端目前最全面的免费离线C语言二级考试参考书籍,主要内容包括: 1、C语言的结构 2、数据类型及其运算 3、基本语句 4、结构程序设计 5、循环结构程序设计 6、数组的定义和引用 7、函数、指针、...
  • AndroidC语言开发系列一、Android C语言开发之一【开发环境的配置】Android是基于Linux的操作系统,处理器是ARM的,所以要在Linux或Windows等x86系统上编译Android能运行的程序,你需要一个交叉编译器。 在Linux...
  • Android NDK开发(一)C语言基础语法

    千次阅读 2018-07-03 17:23:28
    最近一段时间在攻克Android NDK开发。虽然大学的时候主要的学习是放在C/C++上的,但是自从大学毕业之后,就把所有学到的只是都还给老师了,所以,趁着这个机会,将C语言和NDK开发好好的总结一下,学习一下。 自己...
  • 如果你需要编写自己的软件和其他高级用户界面的变化,那么你需要的安卓工程师, 如果你需要写一个不同的适配平台驱动甚至修改需要增加内核函数的C程序员的内核参数, 一般做ROM既是一种需要 , C语言编程的电脑配置...
  • 已ROOT安卓设备 GG修改器 打开android studio,创建Native C++ Project MainActivity.java package com.gs.jc; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view...
  • c语言也能画画

    2021-05-21 02:57:23
    该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include #include #define PI 3.14159265LRESULT CALLBACK WindowProcedure ( HWND, UINT, WPARAM, LPARAM );void OnPaint ( HDC );void DrawLine ( HDC, int, int, int...
  • 安卓app开发之Android JNI即NDK C语言开发教程,适合初学者
  • C语言编译器IDE

    2021-05-20 04:57:29
    C语言编译器IDE安卓版是一款用于C语言代码编写与编译的C语言IDE。C语言编译器IDE安卓版可以直接创建C语言项目,C语言编译器IDE安卓版支持.h .c文件,软件有八款皮肤任用户更换,它里面有很多的相关的学习资源,软件...
  • c语言如何实现做界面

    2021-05-19 13:41:25
    c语言如何实现做界面:C语言bai是一门通用计算机编程语言,应用广泛du。C语言的设计目标是提供一种能以简易的zhi方式编译、dao处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管...
  • C语言函数库大全.pdf

    2021-05-20 03:07:46
    Generated by Foxit PDF Creator © Foxit SoftwareFor evaluation only.函数大全(a 开头)函数名: abort功 能: 异常终止一个进程用 法: void abort(void);程序例:#include#includeint main(void){printf("Calling ...
  • 如今互联网技术发展迅速,越来越多的人选择了计算机专业,而c语言就是入门计算机的基础。想学好c语言没一款实用的编译器怎么行呢,所以今天小编带来一款功能强大的c语言编译器帮各位初学者,这款软件可以安装在手机...
  • 已ROOT安卓设备 GG修改器 打开android studio,创建Native C++ Project activity_main.xml <?xml version=1.0 encoding=utf-8?> <LinearLayout xmlns:android=...
  • 这是一个安卓端采用udp协议实现数据的发送和接受的demo
  • C语言必备安卓

    2015-05-31 13:56:08
    C语言必备】致力希望工程,是Android客户端目前最全面的免费IT离线学习软件,免费内容涉及: 1、C语言数据类型、控制语句、循环、数组、算法、函数、指针、结构、链表等基础视频 2、C语言系统学习离线电子教程 3、...
  • {"i18nChapterName": "章","i18nUnitName": "节","i18nLessonName": "课时","i18nTaskName":"任务"}{"text": {"icon": "es-icon es-icon-graphic","name": "图文"},"video": {"icon": "es-icon es-icon-video","name...
  • Android中编写c语言的可执行程序

    千次阅读 2019-02-23 14:27:25
    Android源码external目录下新建test目录,也可以在system/core目录下创建,生成系统程序。 cd external mkdir test 在test目录下新建tes.c文件,内容如下: #include &lt;stdio.h&gt; #include &lt;...
  • 这周进行了一周的代码移植,将UNIX上的几万行代码移植到Android中供JNI调用。起初觉得并不难,看了代码以后就狂恶心了一通.这段代码是用做多个平台的,里面定义了无数个编译开关,有用的没用的乱七八糟一大堆,我的...
  • 选择SDK Tools ,勾选CMake,LLDB,NDK,这三个,点击下面的apply,而后下载安装,而后点okapp 步骤3:新建一个项目,勾选Include C++ support,而后一直下一步,点击finishmaven 步骤4:个人3.1.2的android studio...
  • package ...import android.os.Bundle;import android.app.Activity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widge...
  • C语言语音朗读小工具

    2020-12-30 00:26:03
    C语言语音朗读小工具 直接将以下代码复制粘贴,运行即可: #include<stdio.h> #include<stdlib.h> #include<string.h> char buf[100] = ""; void showStyle() { system("title 语音朗读"); ...
  • 为了在Android端调用底层的驱动程序,我们需要在Android中调用C语言。 直接新建一个Native C++工程,然后按照这篇文章的方法:https://www.cnblogs.com/steffen/p/9211481.html,就可以调用C语言了。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,914
精华内容 22,365
关键字:

c语言安卓

c语言 订阅