1.你好,android5.0系统中,已经没有load_565rle_image函数,其如何显示该时刻的开机画面?
2.android stdiondkè¦ä»ä¹è·¯å¾
你好,android5.0系统中,已经没有load_565rle_image函数,vip解析源码系统其如何显示该时刻的开机画面?
过程感慨(想直接看教程,请跳过此部分) 在写具体内容之前,我先说下我搞这个东西的过程,由于导师之前说过要搞个图像匹配的androi APP,具体就是匹配前后两张的相似度,类似 安卓5/project/opencvlibrary/opencv-android/3%2F&ts=&use_mirror=nchc 编译/asmcvc/article/details/,我上面说了,捡漏源码不一定要用它,win 自带的 cmd 也可以编译。如果使用 cygwin,要做好心理准备,下载和安装它,非常非常的ky源码久,文件总体积 多G!!!!我是用了9个多小时。 3,评书源码---opencv for android 的sdk 下载完成后。打开 该文件夹,sdk/native/libs,里面有很多平台的文件夹,能在里面出现的,证明你能够在下面的 Application.mk 中设置生成对应的架构的 .so文件,我举个例子,源码画板我的是: 在下面介绍的 Application.mk 文件中有一句话 ,它是用来设置生成 对应架构的 .so 文件,我这里是armeabi-7a,如果要生所有的,写出 :=all,注意,这样很可能会报错,错误信息是,某种架构找不到,所以,我要你看清楚,上面文件夹里面有哪些架构,这些 坑是网上找不到,如果你要生成两种,可以轮着来编译,第二次的编译,不同的架构是不会覆盖的。现在打开 sdk/native/jni,如无意外,里面肯定有个 文件叫做 OpenCV.mk,它就是我们在 android.mk 脚本文件中要引入 opencv C++库所要参照的文件。请用记事本 或者Notepad++ 打开。
android stdiondkè¦ä»ä¹è·¯å¾
ææ°ççNDKéæäºCygwinï¼ä¸ç¨åç¬å®è£ äºã注æé®é¢ï¼
1.å¨local.propertiesé ç½®æ件ä¸ï¼é 置路å¾ä¸ä¸è½æç©ºæ ¼
第ä¸æ¬¡ä½¿ç¨äºC:\Program Files\Androidæ»æ¯æ示é误
2.æ好ä¸è¦åactivityä¸ç³æä¸ä¸ªnativeæ¹æ³
å¦æå¨activityä¸ç³ænativeæ¹æ³ï¼é£ä¹ä½¿ç¨javahçæ¶åå°±å¿ è¦è¦æç¸å ³å¼ç¨çåºç»æ·»å ä¸ï¼å¦ææ¯æ®éçjavaç±»ï¼é£ä¹ä½¿ç¨å°±ä¸éè¦èèå¾å¤androidèªå¸¦çç±»åºã
3.å¨cæ件ä¸ï¼è¦NewStringUTF转æ¢stringç±»åãå¦åç¼è¯æ¶ä¼å°ä½ çå符串çæ°ååçææ¯å¼ç¨ç±»å
以ä¸ä¸ºè½¬è½½ï¼ææç §è½¬è½½çéå°äºä¸ä¸ªé®é¢ï¼åå«è®°ä¸æ¥åèã
Android Studioçæ¬ï¼release 1.0.2
å建ä¸ä¸ªç©ºçprojectãå建ä¸ä¸ªç©ºçactivityã
å¨è¯¥ç±»éé¢å®ä¹ä¸ä¸ªnativeæ¹æ³ãå¦ä¸ï¼
[java] view plaincopy
public native String getStringFromNative();
ç¶åmake projectä¸ä¸ï¼ç®çå°±æ¯ç¼è¯æ对åºçclassæ件ãç¶åæ ¹æ®çæçclassæ件ï¼å©ç¨javahçæ对åºç .h头æ件ã
ç¹å¼android studio çTerminalæ ç¾é¡µï¼é»è®¤è¿å ¥å°è¯¥é¡¹ç®çappæ件夹ä¸ãå¦æå¨è¯¥ç®å½ä¸è¾å ¥cd src\main åæ¢å°mainç®å½ä¸ã
æçè·¯å¾ä¸ºï¼
E:\work\android\MyJNIDemo\app\src\main>
ç¨javahçæcç头æ件ï¼
javah -d jni -classpath D:\androidsdk\platforms\android-\android.jar;..\..\build\intermediates\classes\debug com.jnimobile.www.myjnidemo.MainActivity
javah -d (jniæ°å»ºæ件å) -classpath (sdkè·¯å¾);(class è·¯å¾) (classæ件åï¼å æ¬å å)
å°±ä¼åç°å¨mainç®å½ä¸å¤äºä¸ä¸ªjniæ件夹ï¼éé¢æçæ好ç头æ件ï¼com_jnimobile_www_myjnidemo_MainActivity.h
å 容å¦ä¸ï¼
[cpp] view plaincopy
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jnimobile_www_myjnidemo_MainActivity */
#ifndef _Included_com_jnimobile_www_myjnidemo_MainActivity
#define _Included_com_jnimobile_www_myjnidemo_MainActivity
#ifdef __cplusplus
extern "C" {
#endif
#undef com_jnimobile_www_myjnidemo_MainActivity_BIND_ABOVE_CLIENT
#define com_jnimobile_www_myjnidemo_MainActivity_BIND_ABOVE_CLIENT 8L
#undef com_jnimobile_www_myjnidemo_MainActivity_BIND_ADJUST_WITH_ACTIVITY
#define com_jnimobile_www_myjnidemo_MainActivity_BIND_ADJUST_WITH_ACTIVITY L
#undef com_jnimobile_www_myjnidemo_MainActivity_BIND_ALLOW_OOM_MANAGEMENT
#define com_jnimobile_www_myjnidemo_MainActivity_BIND_ALLOW_OOM_MANAGEMENT L
#undef com_jnimobile_www_myjnidemo_MainActivity_BIND_AUTO_CREATE
#define com_jnimobile_www_myjnidemo_MainActivity_BIND_AUTO_CREATE 1L
#undef com_jnimobile_www_myjnidemo_MainActivity_BIND_DEBUG_UNBIND
#define com_jnimobile_www_myjnidemo_MainActivity_BIND_DEBUG_UNBIND 2L
#undef com_jnimobile_www_myjnidemo_MainActivity_BIND_IMPORTANT
#define com_jnimobile_www_myjnidemo_MainActivity_BIND_IMPORTANT L
#undef com_jnimobile_www_myjnidemo_MainActivity_BIND_NOT_FOREGROUND
#define com_jnimobile_www_myjnidemo_MainActivity_BIND_NOT_FOREGROUND 4L
#undef com_jnimobile_www_myjnidemo_MainActivity_BIND_WAIVE_PRIORITY
#define com_jnimobile_www_myjnidemo_MainActivity_BIND_WAIVE_PRIORITY L
#undef com_jnimobile_www_myjnidemo_MainActivity_CONTEXT_IGNORE_SECURITY
#define com_jnimobile_www_myjnidemo_MainActivity_CONTEXT_IGNORE_SECURITY 2L
#undef com_jnimobile_www_myjnidemo_MainActivity_CONTEXT_INCLUDE_CODE
#define com_jnimobile_www_myjnidemo_MainActivity_CONTEXT_INCLUDE_CODE 1L
#undef com_jnimobile_www_myjnidemo_MainActivity_CONTEXT_RESTRICTED
#define com_jnimobile_www_myjnidemo_MainActivity_CONTEXT_RESTRICTED 4L
#undef com_jnimobile_www_myjnidemo_MainActivity_MODE_APPEND
#define com_jnimobile_www_myjnidemo_MainActivity_MODE_APPEND L
#undef com_jnimobile_www_myjnidemo_MainActivity_MODE_ENABLE_WRITE_AHEAD_LOGGING
#define com_jnimobile_www_myjnidemo_MainActivity_MODE_ENABLE_WRITE_AHEAD_LOGGING 8L
#undef com_jnimobile_www_myjnidemo_MainActivity_MODE_MULTI_PROCESS
#define com_jnimobile_www_myjnidemo_MainActivity_MODE_MULTI_PROCESS 4L
#undef com_jnimobile_www_myjnidemo_MainActivity_MODE_PRIVATE
#define com_jnimobile_www_myjnidemo_MainActivity_MODE_PRIVATE 0L
#undef com_jnimobile_www_myjnidemo_MainActivity_MODE_WORLD_READABLE
#define com_jnimobile_www_myjnidemo_MainActivity_MODE_WORLD_READABLE 1L
#undef com_jnimobile_www_myjnidemo_MainActivity_MODE_WORLD_WRITEABLE
#define com_jnimobile_www_myjnidemo_MainActivity_MODE_WORLD_WRITEABLE 2L
#undef com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_DIALER
#define com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_DIALER 1L
#undef com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_DISABLE
#define com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_DISABLE 0L
#undef com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_SEARCH_GLOBAL
#define com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_SEARCH_GLOBAL 4L
#undef com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_SEARCH_LOCAL
#define com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_SEARCH_LOCAL 3L
#undef com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_SHORTCUT
#define com_jnimobile_www_myjnidemo_MainActivity_DEFAULT_KEYS_SHORTCUT 2L
#undef com_jnimobile_www_myjnidemo_MainActivity_RESULT_CANCELED
#define com_jnimobile_www_myjnidemo_MainActivity_RESULT_CANCELED 0L
#undef com_jnimobile_www_myjnidemo_MainActivity_RESULT_FIRST_USER
#define com_jnimobile_www_myjnidemo_MainActivity_RESULT_FIRST_USER 1L
#undef com_jnimobile_www_myjnidemo_MainActivity_RESULT_OK
#define com_jnimobile_www_myjnidemo_MainActivity_RESULT_OK -1L
/*
* Class: com_jnimobile_www_myjnidemo_MainActivity
* Method: getStringFromNative
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_jnimobile_www_myjnidemo_MainActivity_getStringFromNative
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
å¨jniç®å½ä¸æ°å»ºä¸ä¸ª .cæ件ãæ¥å®ç°å¤´æ件éé¢å£°æçæ¹æ³ãæçå«main.c
å 容å¦ä¸ï¼
[cpp] view plaincopy
#include "com_jnimobile_www_myjnidemo_MainActivity.h"
/*
* Class: com_jnimobile_www_myjnidemo_MainActivity
* Method: getStringFromNative
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_jnimobile_www_myjnidemo_MainActivity_getStringFromNative
(JNIEnv * env, jobject obj){
return (*env)->NewStringUTF(env,"I'm comes from to Native Function!");
}
å¨jniä¸é¢å建ä¸ä¸ªç©ºç.cæ件ãè¦ä¸ç¼è¯æé®é¢ï¼è¿ä¸ªåºè¯¥æ¯android studioçä¸ä¸ªbugã
å¨ local.properties æ件ä¸è®¾ç½®ndkçè·¯å¾ï¼
æçæ¯ï¼
ndk.dir=D\:\\android-ndk-rd
该æ件çå®æ´çé 置信æ¯å¦ä¸ï¼
[cpp] view plaincopy
sdk.dir=D\:\\androidsdk
ndk.dir=D\:\\android-ndk-rd
å¨appç®å½ä¸ç build.gradleä¸è®¾ç½®åºæ件åï¼çæçsoæ件åï¼ï¼
æ¾å° defaultConfig è¿é¡¹ï¼å¨éé¢æ·»å å¦ä¸å 容ï¼
[java] view plaincopy
ndk{
moduleName "MyJni" //设置åº(so)æ件å称
}
å¨activityä¸æ·»å ä¸ä¸ªTextView以便æ¾ç¤ºä»nativeæ¹æ³ä¸è·åçå符信æ¯ï¼ä¿®æ¹å¯¹åºçå¸å±æ件添å ä¸ä¸ªTextViewï¼å¹¶è®¾å®å ¶IDå¼ï¼ã
å¨activityä¸å¢å 对soçå è½½ï¼
[java] view plaincopy
static {
System.loadLibrary("MyJni");
}
activityçå®æ´ä»£ç å¦ä¸ï¼
[java] view plaincopy
package com.jnimobile.www.myjnidemo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.tv);
tv.setText(getStringFromNative());
}
public native String getStringFromNative();
static {
System.loadLibrary("MyJni");
}
}
ç¼è¯ï¼å¹¶è¿è¡ãçé¢ä¸å°±ä¼æ¾ç¤ºä»nativeæ¹æ³ä¼ è¿æ¥çå¼ã
项ç®ç®å½æªå¾å¦ä¸ï¼
è¿ä¸ªæ¯è¿è¡å¨æ¨¡æå¨ä¸çæªå¾ï¼