最近一周用ndk编译aospmiracast功能,因为代码依赖原因,prebuildaosp原生so;因为N之后限制了调用系统so,通过白名单机制开源绕过so限制。今天遇到jni_onLoad无法调用问题,调试半天才发现jni_onload被包含在namespaceandroid里面;导致java无法调用到;回调对象使用时,报nullpointerderefence;一直以为是对象被提前释放;结果
解决jni回调不同线程获取jvm问题
![](https://s1.51cto.com/images/blog/201912/10/432371d8f6d4b07935c541c464902360.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3p
基于platinum重新封装实现了dlna功能接口,测试过程中遇到很多兼容性问题,盒子的反馈很难提供有用的分析定位信息:总结下盒子异常1:盒子视频播放拿不到进度,一般需要先stop->setAvUri->play这种流程去播放视频2:图片不显示。图片尺寸过大,进行压缩3:视频播放结束紧跟着进行图片投屏,触发视频再次播放;需要在盒子退出播放后再设置avuri4:platinum对国产盒子
1.前期ndk开发主要是在开源项目中复用项目的makefile等,就需要修改指定CC或C++编译链;具体情况还依赖于工程的config文件;对于简单项目,则可以直接编写Android.mk;例如引入的GTest与GMock;重新创建Android.mk,利用ndk-build生成.a文件,一同引入新ndk工程即可;另外吐槽下Gmock;对于mock函数还需要继承类,比linux上的mock难用多了
最近在基于dlna开源库重新实现dlna服务,对于手机端来说主要提供ControlPoint+媒体文件HttpServer功能。调研了国内APP和友商的实现,以使用libupnp和Cling的居多,部分使用Platinum;ClingJava开发的,对于APP来说容易导入,缺陷就是github上现在不再维护了;Libupnp以C实现,设备和服务封装不如cling及Platinum,开发起来不如后两
Nuplayer中音视频同步主要依靠MediaClock中记录的锚点时间,所以先看下MediaClock类MediaClock::MediaClock():mAnchorTimeMediaUs(-1),mAnchorTimeRealUs(-1),mMaxTimeMediaUs(INT64_MAX),mStartingTimeMediaUs(-1),mPlaybackRate(1.0){}
发现一个比较好的介绍graphic帖子, 后面会跟着帖子来梳理下graphic相关知识点http://blog.csdn.net/u014409795/article/details/51276468BufferQueue class BufferQueue { &n
一篇不错的nuplayer文章http://blog.sina.com.cn/s/blog_6e65e8cc0102wlga.html
http://blog.csdn.net/pk0071/article/details/52104984最近准备做IM功能,在技术预研当中,其实可行方案还是比较多的,就看怎么选了这里有必要普及一下xmpp是个什么东西?引用某娘的定义: XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的
场景: 1)IMediaPlayer.cpp Bn -> Bp sp<IGraphicBufferProducer> bufferProducer = interface
jstring ifaceStr, jstring opPackageNameStr String16(opPackageName.c_str()),client, String8(iface.c_str())2. String16 name16 = String16("H
在owner切换成guest用户时,发现无法获取到OP_RECORD_AUDIO = 27权限在创建audiosource时,传入的包名 new AudioSource(... String16("media")/* mOpPackageName */,media UID 1013 属于系统进程,得到use
Android N 为了安全需要,将media 各项服务都单独独立成进程, Miracast 也进行了相应harden尝试,将remotedisplay创建成单独进程,然后通过getservice付给JNI对象 遇到困难主要是system/sepolicy里面的权限问题 &nb
从 GITHUB 上拉别人一个boost工程https://github.com/moritz-wundke/Boost-for-Android编译需要MinGW(Min GNU for Window)下载了MinGW 下载器 http://www.mingw.org/wiki/MSYS然后将bin路径加入到path环境变量中C:\msys\1.0\binMingw 运行ls 提示有报错
Google Cast Function依赖com.android.support:mediarouter-v7com.google.android:gms:play-services-cast-frameworkCast 过程1)framework提供一个CastContext singleton给APP使用2)MediaRoute 提供设备扫描3)CastSession (由CastConte
结合别人的博客和自己看的代码,梳理下自己对surface的理解1.代码相关文件/AOSP/frameworks/native/libs/ui主要是bufferqueuecore与surfaceflinger中分配GraphicBufferAllocator 通过hw_get_module()&gralloc_open与硬件提供的设备交互ex: /hardware/qcom/display/
1 什么是ORM ORM其全称叫做对象关系映射(Object Relation Mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。它实际是创建了一个可在编程语言里使用的“虚拟对象数据库”。
平台编译的CP 问题, 使用official CP
http://blog.csdn.net/robertbaker/article/details/41700663test later at homehttps://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 通过清华镜像 下载android源码,测试可以
1. linux ip限制使用hosts.allow和hosts.deny来设置ip白名单和黑名单,/etc/目录下2. linux-06bq:/etc/samba # useradd sunjinglinux-06bq:/usr/local/services/samba/bin # ./smbpasswd -a sunjing也可以sudo pdbedit -a XX 设置smb 密码
在OMX.cpp中有一段判断在wfd链接状态下视频播放的分辨率判断逻辑status_t OMX::setParameter(1) 首先计算每个视频窗口的分辨率 for (List<mwInfo*>::iterator it = mwList.begin(); it != mwList.end(); ++it) { 视频窗口分辨率+ wfd分辨率之和 是
SurfaceMediaSource::read()锁控制从IGraphicBufferConsumer处读取buffer,当graphic产生数据Overrun时等待 while (mStarted && mNumPendingBuffers == mMaxAcquiredBufferCount) { mM
简单的线程与锁关系基本概念http://blog.csdn.net/thl789/article/details/9879151数据不一致现象http://blog.sina.com.cn/s/blog_6572515e0100y4mh.html
当调试那些使用了USB外设和主机特性的应用时,你很有可能把你的USB硬件连接到你的Android设备上,这将阻止你通过USB建立adb到Android设备的连接。你通过网络仍可以访问adb。通过网络连接adb:通过USB将Android设备连接到电脑。从SDK 的 platform-tools 目录,在命令行输入adb tcpip 5555输入:adb connect
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号