首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android logcat打印FFmpeg调试信息

概述 日常Android开发,我们都是通过Logcat来查看日志,但是将FFmpeg移植到Android上,无法Logcat查看调试信息而无法分析错误。...本文将介绍如何配置来将FFmpeg的信息输出到Logcat。 avlogset_callback FFmpeg的avlogset_callback函数用来注册FFmpeg日志输出的回调接口。...FFmpeg源码的ffmpeg.c文件的main函数中有avlogsetcallback的调用,而logcallback_null是个空的回调函数,一个思路是可以直接在该回调函数写打印代码: int...ANDROID_LOG_SILENT // 打印可变参数 #define VLOG(level, TAG, ...)... configuration日志行可以看到我在编译时的配置项,当我们拿到一个别人编译好的,如果我们不知道他的编译脚本,通过这日志信息也可以知道。

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

Java设计模式Android的实践

需要注意以下几点: (1)子类的所有方法必须在父类声明,或子类必须实现父类声明的所有方法。 (2)尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类声明的方法。...依赖倒转原则 实现依赖倒转原则时,我们需要针对抽象层编程,而将具体类的对象通过依赖注入的方式注入到其他对象,依赖注入是指当一个对象要与其他对象发生依赖关系时,通过抽象来注入所依赖的对象。...(3)接口注入是指通过接口中声明的业务方法来传入具体类的对象。 这些方法定义时使用的是抽象类型,在运行时再传入具体类型的对象,由子类对象来覆盖父类对象。...接口隔离原则 (1)使用接口隔离原则时,我们需要注意控制接口的粒度。 (2)接口不能太小。如果太小会导致系统接口泛滥,不利于维护; (3)接口也不能太大。...Java设计模式详解 Java设计模式之创建型模式 Java设计模式之结构型模式 Java设计模式之行为型模式 项目源码 项目源码地址:https://github.com/xuexiangjys/architect-java

83330

DelphiAndroid下使用Java的方法

本文将以Android的USB串口通讯为例,介绍Delphi如何Android中使用Java。   ...USB串口通讯地址:    https://github.com/felHR85/UsbSerial 一、Java编译   1.安装Android Studio   2.Android Studio...此处的classes.jar即为usbserial编译后的java,生成Delphi的接口文件Android.JNI.UsbSerial.pas 五.使用Java Delphi工程引用Android.JNI.UsbSerial.pas...2.将新生成的dex文件发布到远程路径classes\,同时java需要的文件也同时添加 ?...总结 以上所述是小编给大家介绍的DelphiAndroid下使用Java的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

1.9K20

Android Instant App(安卓即时应用程序)启用 ProGuard (混淆)

想一下你的项目中可能存在的典型的 common(公共) 模块( Instant Apps(即时应用程序)术语,我们将称这个模块为 base feature(基础功能) 模块):它可能依赖于支持的许多部分...(混淆)没有考虑模块在运行时如何加载在一起。...功能模块的行为与相似,它们都将代码和资源提供给编译的最后阶段,应用程序模块这些都发生在将所有东西打包成一个 APK 之前。...为你所有的即时应用功能启用 ProGuard(混淆) 可安装的应用程序版本构建过程,ProGuard(混淆)只运行一次:使用 com.android.application 插件的模块。...-g java.io.InterruptedIOException java.io.FileNotFoundException ... android.app.Activity android.app.MediaRouteButton

2.5K30

Android 开发如何动态加载 so 文件

Android 开发调用动态文件(*.so)都是通过 jni 的方式,而静态加载往往是 apk 或 jar 包调用so文件时,都要将对应 so 文件打包进 apk 或 jar 包。...so 文件很大的话,采用动态加载可以减少 apk 的包,变小。 其实我们常用第三方 so ,单个可能没问题,如果多个第三方 so 文件,同时加载可能会出现冲突,而动态加载就能够解决这一问题。...我们 Android 中加载 so 文件,提供的 API 如下: //第一种,pathName 文件的绝对路径 void System.load(String pathName); //第二种,参数为文件名...,不包含文件的扩展名,必须是JVM属性Java.library.path所指向的路径,路径可以通过System.getProperty('java.library.path') 获得 void loadLibrary...实现思路 既然使用动态加载的好处和陷阱我们都大致了解了,那就可以实现的时候,注意陷阱就可以了。

5K101

应用程序设计:动态如何调用外部函数?

大家好,我是一个动态链接! 这个名字,相信你一定早就如雷贯耳了。 ? 计算机早期时代,由于内存资源紧张,我可是发挥了重大的作用!...不论是 Windows 系统,还是 Unix 系列平台上,到处都能见到我的身影,因为我能为大家节省很多资源啊,资源就是人民币!...悲从中来 可是有一天,我遇到一件烦人的事情,我的主人说:你这个服务函数的计算过程太单调了,给你找点乐子,你执行的时候啊,到其他一个外部模块里调用一个函数。.../main func_in_lib is called func_in_main b = 2 也就是说,我的动态文件,正确的找到了外部其他模块的函数地址,并且愉快的执行成功了!...既然你不想提供,那我就满足你: 首先,动态中提供一个默认的函数实现(func_in_main_def); 然后,再提供一个专门的注册函数(register_func),如果外部模块想提供 func_in_main

2.6K20

监听者模式 - JavaAndroid的使用

某些数据变化时,其他的类做出一些响应。处理数据(或者分发事件)的类主动投送消息,感兴趣的类主动“订阅”消息。 监听者模式Android中有大量的运用,相信大家都不会感到陌生。...Android开发,Button控件的点击事件就是监听者模式最常见的例子。 当Button被点击,执行了 OnClickListener.onClick。...Activity给这个Button设置了自己实现的OnClickListener,并复写了onClick方法,就能执行自定义操作了。 Java代码实例 下面来用Java来实现监听者模式。...Android中使用监听器 最常见的例子是给Button设置点击事件监听器。 类似上个例子,设计一个接口当做监听器。Android回调时可以利用handler,控制调用的线程。...private Handler mMainHandler; mMainHandler = new Handler(Looper.getMainLooper());// 主线程运行 private

1.7K60

Android 如何优雅地配置私密信息

一般来说有以下几种方式 写在 string 资源文件 配置 BuildConfig 类 使用 Android 密钥系统 使用 NDK 加密 保存在服务端,通过接口获取 直接硬编码肯定不是最好的方式...使用 Android 密钥系统 Android 密钥系统可以保护密钥材料免遭未经授权的使用。...首先,Android 密钥可以防止从应用进程和 Android 设备整体提取密钥材料,从而避免了 Android 设备之外以未经授权的方式使用密钥材料。...其次,Android 密钥可以让应用指定密钥的授权使用方式,并在应用进程之外强制实施这些限制,从而避免了 Android 设备上以未经授权的方式使用密钥材料。...那么当通过接口获取到私密信息如何保存呢?这时候可以使用 NDK 或者 Android 密钥系统。

1.6K20

【错误记录】NDK 导入外部 so 动态报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态两种方法 )

文章目录 一、报错信息 二、解决方案 ( Android Studio 配置外部 so 动态两种方法 ) 1、jniLibs 目录存放 2、libs 目录存放 一、报错信息 ---- 外部引用 so...(ActivityThread.java:2869) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java...(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main...:858) 二、解决方案 ( Android Studio 配置外部 so 动态两种方法 ) ---- 1、jniLibs 目录存放 将 4 个 CPU 架构的动态拷贝到 app/src/main.../jniLibs 目录下 , 不用进行其他配置 , 可以立刻使用 ; 2、libs 目录存放 build.gradle 的 android 标签下配置 sourceSets {

74930

Android开发如何使用OpenSL ES播放解码后的pcm音频文件?

一.认识OpenSL ES   OpenSL ES的全称是Open Sound Library For Embedded Systems,即应用于嵌入式系统的开源音频。...运行于native层,需要自己管理资源的申请和释放,没有Dalvik虚拟机垃圾回收机制 支持pcm数据的采集和播放 支持播放的音频数据来源广泛,res、assets、sdcard、在线网络音频以及代码定义的音频二进制数据...因为AudioRecord和AudioTrack都是Android提供的Java API,无论是采集还是播放音频,都需要将音频数据从java层拷贝到native层,或从native层拷贝到java层,这无疑是十分消耗资源的...如果希望减少拷贝,开发更加高效的Android音频应用,则建议使用Android NDK提供的OpenSL ES API接口,它支持native层直接处理音频数据。...log OpenSLES )   java层只需获取到要播放的pcm文件的位置,然后传入native层即可,代码如下: val pcmPath=getExternalFilesDir

14010

android如何获取view布局的高度与宽度详解

前言 可能很多情况下,我们都会有activity获取view 的尺寸大小(宽度和高度)的需求。面对这种情况,很多同学立马反应:这么简单的问题,还用你说?你是不是傻。。...当我们 onCreate() 方法获取某个 View 组件的宽度和高度,直接调用 getWidth()、getHeight()、getMeasuredWidth()、getMeasuredHeight...OnPreDrawListener 监听事件 视图将要绘制时调用该监听事件,会被调用多次,因此获取到视图的宽度和高度后要移除该监听事件。...UI 事件队列会按顺序处理事件, setContentView() 被调用后,事件队列中会包含一个要求重新 layout 的 message,所以任何 post 到队列的 Runnable 对象都会在...像在自定义,加载一次布局,应该选中最后一个post的方法最为使用。 另外还用的多的,应该是第三种方式,一般在外部使用,比如需要等待Recyclerview绘制完成后进行的操作。

5.7K10

Android 返回堆栈管理】打印 Android 当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 相同 Stack 的不同 Task

文章目录 一、打印 Android 当前运行的 Activity 任务栈信息 二、Activity 任务栈信息分析 三、Activity 相同 Stack 的不同 Task 情况 一、打印 Android...当前运行的 Activity 任务栈信息 ---- 使用如下命令 , 打印 Android 手机的 Activity 栈 : adb shell dumpsys activity activities...; 三、Activity 相同 Stack 的不同 Task 情况 ---- 默认状态下 , 同一个应用启动的两个 Activity 都在相同 Stack 的相同 Task , 但是如下情况会出现...Activity 相同 Stack 的不同 Task ; 参考 【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )...; 注意 : 两个 Activity 虽然不同的 Task 任务 , 但还是相同的 Stack 栈 , 如 : Stack #365: type=standard mode=fullscreen

5.5K10

Android如何通过Gradle发布java依赖(jar)到 jitpack 公共仓库(—)

作为一个码农,我们开发了很多项目,也积累了很多自己的通用依赖,这些都是我们的项目积累,那么我们该如将自己的依赖方便的集成到以后的项目开发,或者共享给比人使用呢? ...项目根build.gradle添加android-maven-gradle插件地方buildscript { repositories { google() jcenter...需要发布的module添加引用:apply from:".....图片图片3、用GitHub账号登录JitPack(https://jitpack.io/),如下图图片如何使用:图片 至此已经成功发布完成,那么该如何使用呢,在上面的页面其实已经有How to use的描述了.../com/github/////javadoc/index.html图片至此将自己的java libary发布到jitpack上供他人使用的详细步骤介绍完毕

1.1K40

【错误记录】Android Studio 导入外部 so 动态报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态的 CPU 架构 )

文章目录 一、报错信息 二、解决方案 ( 指定 APK 打包动态的 CPU 架构 ) 一、报错信息 ---- 外部引用 so 动态 , 如果只有一个 armeabi-v7a 的动态 , 那么如果在...(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main...:858) 二、解决方案 ( 指定 APK 打包动态的 CPU 架构 ) ---- 上述报错低版本的 Gradle 插件 和 Gradle 可以自动兼容 , 不需要进行额外设置 ; 如下配置...插件与 Gradle , 如下配置 , 就会报上述错误 ; 这时就需要指定 APK 打包动态的 CPU 架构 , Module 下的 build.gradle 构建脚本 , 进行如下设置...; android { defaultConfig { //配置 APK 打包 哪些动态 // 示例 : 如在工程中集成了第三方 , 其提供了 arm, x86

58130

自动化-Appium-获取toast消息(Java版)

获取toast消息 Android的toast是一种简易的消息提示框,toast提示框不能被用户点击,会根据所设置的显示时间自动消失。...由于Windows与Mac环境下操作基本一致,此次示例为Windows环境。 1、编写脚本 1、脚本参数,将automationName值填写uiautomator2。...org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import io.appium.java_client.android.AndroidDriver...; import io.appium.java_client.android.AndroidElement; /** * 获取toast消息 * * @author wangmcn * */...2、执行测试脚本,脚本执行步骤: (1)启动应用程序 (2)获取toast信息为“网络异常”,并打印控制台 (3)关闭应用程序 脚本执行结束后,控制台打印的信息:获取到toast信息。

68020

【Groovy】Android Studio 创建 Groovy 工程 ( 创建 Android Studio 工程 | 创建并改造 Java 依赖 | 编写 Groovy 代码并运行 )

四、编写 Groovy 代码文件并运行 一、创建 Android Studio 工程 ---- Android Studio 欢迎界面 , 选择 " Create New Project " 创建新的...Android 应用 ; 默认创建 Module 即可 , 应用的 Module 不能作为 Groovy 开发的工程 , 这里随意即可 , Groovy 开发工程需要额外创建 Java 依赖...Module , 然后基于 Java 依赖 Module 进行改造 ; 设置工程名称 , 然后点击 " Finish " 完成设置 ; 新创建的 Android 工程是一个空白工程 ; 二、...工程 ; 选择创建 " Java or Kotlin Library " 的 Module ; 创建完后的依赖 Module ; 三、改造 Java or Kotlin Library 类型的...def static main(def args) { // Groovy 可以使用 Java 语法 System.out.println("Hello

1.5K40

Android如何指定SnackBar屏幕的位置及小问题解决

Android指定SnackBar屏幕的位置 Snackbar 常以一个小的弹出框的形式,出现在手机屏幕下方或者桌面左下方,并且是屏幕所有层的最上方。...如果要指定它在屏幕出现的位置,可以把SnackBar放置android.support.design.widget.CoordinatorLayout内。...RelativeLayout里添加CoordinatorLayout如下: <android.support.design.widget.CoordinatorLayout android:layout_width...FrameLayout.LayoutParams l = (FrameLayout.LayoutParams) v.getLayoutParams(); 当然自己写显示在上边很麻烦的,还要处理显示及隐藏动画 Snackbar.Java...总结:如果长期显示顶部可以用Github的项目,否则用design就行 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对

4.2K20
领券