Android 集成第三方SDK

6月 一切有为法 有如梦幻泡影 如梦亦如幻 如露亦如电 当作如是观 

一.客户需求

1.1.在系统里面集成 第三方SDK 即将aar资源集成到系统层 让应用调用

1.2.客户的算法代码也集成到源码当中去

二.先做到 能调用jar包吧

2.1.内置

a./frameworks/opt/demosdk/ 加入资源 并加入编译规则

Android.mk

1
2
3
4
5
6
7
8
LOCAL_PATH := $(my-dir)
 
include $(CLEAR_VARS)
 
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := MVIDCodeReaderSDKYP:MVIDCodeReaderSDKYP.jar \
                        MVIDCodeReaderWrapperYP:MVIDCodeReaderWrapperYP.jar
 
include $(BUILD_MULTI_PREBUILT)  

b.这里是调用jar 的方法

 需要实现的接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package android.os.ypinterfaces;
 
import java.util.List;
 
import static com.yunpan.codereader.MVIDCodeReaderDefine.MVID_IMAGE_INFO;
 
public interface YpCodeReaderManagerInterfaces {
    void getCodeInfo(List<String> listCode);
 
    /* public byte[] pImageBuf;
     public int nImageLen = 0;
     public MVIDCodeReaderDefine.MVID_IMAGE_TYPE enImageType;
     public short nWidth = 0;
     public short nHeight = 0;
     public int nFrameNum = 0;*/
    void getImageInfo(byte[] pImageBuf, int nImageLen,int enImageType ,int nWidth, int nHeight,int nFrameNum);
}

d. 加入编译 

1
2
3
4
5
6
7
8
9
10
11
12
13
--- a/frameworks/base/Android.mk
+++ b/frameworks/base/Android.mk
@@ -1357,7 +1357,10 @@ LOCAL_SRC_FILES := $(ext_src_files)
  
 LOCAL_NO_STANDARD_LIBRARIES := true
 LOCAL_JAVA_LIBRARIES := core-oj core-libart
-LOCAL_STATIC_JAVA_LIBRARIES := libphonenumber-platform
+LOCAL_STATIC_JAVA_LIBRARIES := libphonenumber-platform \
+                                                            CodeReaderSDK \
+                                                            MVIDCodeReaderWrapper
+                                                                              
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := ext

android 源码下编译可供第三方应用使用的JAR包

1
2
3
4
5
6
7
8
9
10
--- a/build/core/tasks/check_boot_jars/package_whitelist.txt
+++ b/build/core/tasks/check_boot_jars/package_whitelist.txt
@@ -109,6 +109,10 @@ dalvik\..*
 libcore\..*
 android\..*
 com\.android\..*
+com\.example\.mvidcodereader
+com\.mvid\.codereader\..*
+MVIDCodeReaderWrapper
+ 

e.上层应用 调用 framework层能用到的jar包

   同写一样的接口  这里是为了 能够拿到回调方法的数据 

      iyunpanCodeReaderManager.setOnPreviewCallBack

    mlistener.getImageInfo(pImageInfo, l_nImageLen, mYpImageType, mWidth, mHeight, mFrameNum);

1
2
3
4
5
6
7
8
package android.os.ypinterfaces;
 
import java.util.List;
 
public interface YpCodeReaderManagerInterfaces {
    void getCodeInfo(List<String> listCode);
    void getImageInfo(byte[] pImageBuf, int nImageLen, int enImageType, int nWidth, int nHeight,int nFrameNum);
}

  都是通过反射来 获取上层的方法 

activity_main.xml

MainActivity.java 

  

  

  

  

  

 

posted @   CrushGirl  阅读(1053)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示