<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sendidtx的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sendidtx</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sendidtx]]></copyright><item><title><![CDATA[GLSurfaceView渲染灰度图数据]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/140374984</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/140374984</guid><author>sendidtx</author><pubDate>Fri, 12 Jul 2024 11:36:38 +0800</pubDate><description><![CDATA[【代码】GLSurfaceView渲染灰度图数据。]]></description><category></category></item><item><title><![CDATA[GLSurfaceView渲染YUV数据]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/139429436</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/139429436</guid><author>sendidtx</author><pubDate>Tue, 04 Jun 2024 08:50:52 +0800</pubDate><description><![CDATA[【代码】GLSurfaceView渲染YUV数据。]]></description><category></category></item><item><title><![CDATA[Android LayoutInflater]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/120865431</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/120865431</guid><author>sendidtx</author><pubDate>Wed, 20 Oct 2021 14:25:53 +0800</pubDate><description><![CDATA[inflate方法：


public View inflate (int resource, ViewGroup root)
public View inflate (int resource, ViewGroup root, boolean attachToRoot)

两个参数内部调用三个参数

所以一共就四种方法：


inflater.inflate(R.layout.item, null, true);
inflater.inflate(R.layout.item, null, false);
]]></description><category></category></item><item><title><![CDATA[JNI操作数组]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/118109010</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/118109010</guid><author>sendidtx</author><pubDate>Tue, 22 Jun 2021 15:55:27 +0800</pubDate><description><![CDATA[JNI操作数组1. jType* GetArrayElements(Array array, jboolean* isCopy)1.1. isCopy2. void ReleaseArrayElements(jTypeArray array, j* elems, jint mode)2.1. mode3. void GetArrayRegion(JNIEnv *env, ArrayType array,jsize start, jsize len, Type *buf)4. void SetArrayReg]]></description><category></category></item><item><title><![CDATA[CMAKE静态库及动态库的引用]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/118102912</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/118102912</guid><author>sendidtx</author><pubDate>Tue, 22 Jun 2021 11:17:43 +0800</pubDate><description><![CDATA[1、动态库

1.1 引用头文件


#导入头文件
include_directories(include)

1.2 导入动态库


#导入库文件
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}")

1.3 链接动态库


target_link_libraries( # Specifies the target library.
        #生成的动态库 native-]]></description><category></category></item><item><title><![CDATA[Dart 空安全 ？ ！]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/117362677</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/117362677</guid><author>sendidtx</author><pubDate>Fri, 28 May 2021 14:47:59 +0800</pubDate><description><![CDATA[Dart 空安全 ？ ！
1 使用 ? 声明 Nullable 类型
int? age;
age = 10;
age = null; // ????

A?.B
如果 A 等于 null，那么 A?.B 为 null
如果 A 不等于 null，那么 A?.B 等价于 A.B

A??B
如果 A 等于 null，那么 A??B 为 B
如果 A 不等于 null，那么 A??B 为 A

2 在有把握的时候，使用 !
int? maybeValue = 42;
int value = maybeValue]]></description><category></category></item><item><title><![CDATA[jstring,std::string和char*之间转换]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/117127747</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/117127747</guid><author>sendidtx</author><pubDate>Fri, 21 May 2021 16:52:44 +0800</pubDate><description><![CDATA[jstring string = env-&gt;newStringUTF(const char *);


std::string string = const char *str;


const char* str = env-&gt;GetStringUTFChars(jstring,0);



]]></description><category></category></item><item><title><![CDATA[JNI GetByteArrayElements 和 GetByteArrayRegion区别]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/117083713</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/117083713</guid><author>sendidtx</author><pubDate>Thu, 20 May 2021 17:10:36 +0800</pubDate><description><![CDATA[GetArrayElements
GetArrayElements 和ReleaseArrayElements成对使用
jbyte* data = env-&gt;GetByteArrayElements(array, NULL);    
if (data != NULL) {
    memcpy(buffer, data, len);        
    env-&gt;ReleaseByteArrayElements(array, data, JNI_ABORT);
}

GetArrayReg]]></description><category></category></item><item><title><![CDATA[Dart中的Isolate]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/116868497</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/116868497</guid><author>sendidtx</author><pubDate>Sun, 16 May 2021 00:30:18 +0800</pubDate><description><![CDATA[Isolate
Isolate中文意思是隔离，是 Dart 中的线程。在 Dart 中 async 和 Future 无法解决所有耗时的工作。
Isolate虽好，但也有合适的使用场景，不建议滥用Isolate，每当我们创建出来一个新的 Isolate 至少需要 2mb 左右的空间甚至更多。

方法执行在几毫秒或十几毫秒左右的，应使用Future
如果一个任务需要几百毫秒或之上的，则建议创建单独的Isolate

创建Isolate

Isolate由一对分别由用于接收消息的ReceivePort对象，和用]]></description><category></category></item><item><title><![CDATA[C++动态库的生成与引用]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/116851133</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/116851133</guid><author>sendidtx</author><pubDate>Sat, 15 May 2021 15:04:08 +0800</pubDate><description><![CDATA[C++动态库的生成与引用

一、动态库的导出（非托管）


extern "C" __declspec(dllexport) int _stdcall func(int a, int b);



def文件（推荐)，这种方式不再需要
__declspec(dllexport)

，需要在链接–&gt;输出–&gt;module def中选择def文件。


二、动态库的引用


在C++中引用


静态加载：
#pragma comment(lib,"myDll.lib")
extern "C" __de]]></description><category></category></item><item><title><![CDATA[Git服务器搭建]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/116842824</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/116842824</guid><author>sendidtx</author><pubDate>Sat, 15 May 2021 12:55:03 +0800</pubDate><description><![CDATA[文章目录系统环境CentOS71、安装Git2、创建一个git用户组和用户3、创建证书登录4、初始化Git仓库5、克隆仓库Windows
系统环境
CentOS7
1、安装Git
 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel    //安装依赖
 yum install git        //安装Git 也可以直接运行yum intall git  yum会自动安装软件依赖

2]]></description><category></category></item><item><title><![CDATA[Android 图片适配]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/105975150</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/105975150</guid><author>sendidtx</author><pubDate>Thu, 07 May 2020 16:24:00 +0800</pubDate><description><![CDATA[Android的drawable文件一共可以有：

默认的drawable
	drawable-ldpi(低密度)
	drawable-mdpi(中等密度)
	drawable-hdpi(高密度) 
	drawable-xhdpi(超高密度)
	drawable-xxhdpi(超超高密度)
	drawable-xxxhdpi(超超超高密度)
	drawable-...]]></description><category></category></item><item><title><![CDATA[SurfaceHolder的setType类型]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/105639890</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/105639890</guid><author>sendidtx</author><pubDate>Mon, 20 Apr 2020 17:20:59 +0800</pubDate><description><![CDATA[SURFACE_TYPE_NORMAL：用RAM缓存原生数据的普通Surface
SURFACE_TYPE_HARDWARE：适用于DMA(Direct memory access )引擎和硬件加速的Surface
SURFACE_TYPE_GPU：适用于GPU加速的Surface
SURFACE_TYPE_PUSH_BUFFERS：表明该Surface不包含原生数据，Surface用到的数据由其...]]></description><category></category></item><item><title><![CDATA[JNI数据转换]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/103030281</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/103030281</guid><author>sendidtx</author><pubDate>Tue, 12 Nov 2019 15:44:05 +0800</pubDate><description><![CDATA[jbyteArray 转换为 c的 unsigned char *

jint Java_cn_hongdameng_aacencoder_AacEncoder_AacWrite(JNIEnv* env,jobject this,jbyteArray jBuffer, jint jBufferSize)
{
 jbyte* bBuffer = (*env)-&gt;GetByteArrayEl...]]></description><category></category></item><item><title><![CDATA[蓝牙4.0,蓝牙BLE模块,蓝牙4.0和蓝牙BLE]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/80941719</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/80941719</guid><author>sendidtx</author><pubDate>Fri, 06 Jul 2018 15:29:09 +0800</pubDate><description><![CDATA[一、关于蓝牙4.0蓝牙4.0标准包含两个蓝牙标准，准确的说，是一个双模的标准，它包含传统蓝牙部分（也有称之为经典蓝牙Classic Bluetooth）和低功耗蓝牙部分（Bluetooth Low Energy）。这两个部分适用于不同的应用或者应用条件。传统蓝牙是在之前的1.0.1.2，2.0+EDR,2.1+EDR,3.0+EDR等基础上发展和完善起来的，低功耗蓝牙是Nokia的Wibree标准...]]></description><category></category></item><item><title><![CDATA[iOS —— 避免多个按钮同时点击]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/80927768</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/80927768</guid><author>sendidtx</author><pubDate>Thu, 05 Jul 2018 15:28:45 +0800</pubDate><description><![CDATA[- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {        // 避免多个按钮同时点击    [[UIButton appearance] setExclusiveTouch:YES];        return YES;...]]></description><category></category></item><item><title><![CDATA[OC -- UIButton]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/80576415</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/80576415</guid><author>sendidtx</author><pubDate>Tue, 05 Jun 2018 09:19:56 +0800</pubDate><description><![CDATA[//初始化Button 不用alloca init 的方法 用便利构造器初始化UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];typedef NS_ENUM(NSInteger, UIButtonType) {    UIButtonTypeCustom = 0,       -自定义风格    UIButtonTyp...]]></description><category></category></item><item><title><![CDATA[UIButton中addTarget事件]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/80505448</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/80505448</guid><author>sendidtx</author><pubDate>Wed, 30 May 2018 09:41:43 +0800</pubDate><description><![CDATA[1、UIControlEventTouchDown 　　指鼠标左键按下（注：只是“按下”）的动作2、UIControlEventTouchDownRepeat　　指鼠标左键连续多次重复按下（注：只是“按下”）的动作，比如，鼠标连续双击、三击、……、多次连击。　　说明：多次重复按下时，事件序列是这样的：　　UIControlEventTouchDown -&amp;gt; 　　(UIControlEvent...]]></description><category></category></item><item><title><![CDATA[Android——AlertDialog及其子类]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/80183117</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/80183117</guid><author>sendidtx</author><pubDate>Thu, 03 May 2018 17:17:26 +0800</pubDate><description><![CDATA[Android提供了功能丰富，应用广泛的对话框：AlertDialog。类图如下：AlertDialogAlertDialog对话框分为三个区域：1.标题区。包括图标和文本，setIcon()设置图标，setTitle()设置文本。2.内容区。可以是简单的文本，也可以是复杂的View。AlertDialog提供了6个方法来设置不同的内容。        1)setMessage()，简单的文本。 ...]]></description><category></category></item><item><title><![CDATA[Android --NDK(C调Java)]]></title><link>https://blog.youkuaiyun.com/sendidtx/article/details/80156597</link><guid>https://blog.youkuaiyun.com/sendidtx/article/details/80156597</guid><author>sendidtx</author><pubDate>Tue, 01 May 2018 14:55:14 +0800</pubDate><description><![CDATA[Java代码：package com.picovr.javacall;

import android.util.Log;


public class NativeMethord {

    static {

        System.loadLibrary(&quot;native_jni&quot;);
    }

    public void helloFromJava() {

        ...]]></description><category></category></item></channel></rss>