android
文章平均质量分 65
jwzhangjie
工作9年,游戏SDK开发4年
展开
-
ConstraintSet实现ConstraintLayout动画切换
ConstraintSet初始化方式//Manuallyc = new ConstraintSet(); c.connect(....);//from a R.layout.* objectc.clone(context, R.layout.layout1);//from a ConstraintLayoutc.clone(clayout);折叠布局<?xml version="1.0" encoding="utf-8"?><androidx.con...原创 2021-01-31 18:56:10 · 736 阅读 · 0 评论 -
Android项目Gradle配置管理
Android Studio采用Gradle进行项目构建,Gradle是一个开源构建自动化工具。Gradle构建脚本是使用Groovy和Kotlin DSL编写的。这篇文章主要介绍Android项目中build.gradle配置以及如何定义自己项目的build.gradle内容。build.gradle内容说明config.gradle统一配置管理通常一个项目有多个模块(moudle),每个模块都有一个build.gradle...原创 2021-01-31 12:20:39 · 558 阅读 · 1 评论 -
设置PreferenceFragment主题
整个项目主题颜色暗色,在使用PreferenceFragmentCompat文字也是黑色的导致看不清楚,采取更改PreferenceFragmentCompat主题实现,效果如下:查看PreferenceFragmentCompat源码看到onCreate开始设置Theme,先获取preferenceTheme获取不到采用默认PreferenceThemeOverlay项目中调用R.style.MyFragmentTheme内容,其他需要更改的直接添加...原创 2021-01-17 01:45:55 · 714 阅读 · 0 评论 -
A single virtual joystick development
Mainly includes three parts, respectively is the calling class, touch handler class, utility class.Touch handler class: AppSingleRockerpackage com.seuic;import com.seuic.util.MathUtils;import原创 2013-03-26 19:14:19 · 2452 阅读 · 0 评论 -
Double the virtual joystick
In front of a single virtual joystick development foundation, through the relative position to calculate another coordinate system apk: http://download.csdn.net/download/jwzhangjie/5184479原创 2013-03-26 19:56:33 · 1489 阅读 · 11 评论 -
使用libjpeg对图像进行压缩
libjpeg 是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现。Libjpeg不仅可以把bmp格式转化成jpg格式,还支持其他格式的转化成jpg格式(例如ppm,gif,targa,rle等)。转化流程如下:(1) 分配和初始化一个JPEG压缩对象在libjpeg中,JPEG压缩对象被定义为“struct jpeg_comp转载 2013-04-12 12:34:42 · 8962 阅读 · 0 评论 -
android 编译libjpeg
之前需要将yuv转换为jpg图像,查看网上说libjpeg-turbo比libjpeg快2-3倍,但是在android手机上实践了一下,需要40-60个ms,这个虽然比以前的300ms好多了,但是还是不能满足我的要求,进一步查看了网上信息,libjpeg-turbo是为x86和x86-64进行优化的使用了SIMD指令,而手机上不支持,所以需要在试验一下libjpeg的需要。下面是我的编译步骤:原创 2013-04-13 10:39:56 · 6264 阅读 · 1 评论 -
h264检测是I帧还是P帧,解决录像第一帧有马赛克问题
最近使用h264码流数据进行录像,但是录出来的第一帧有马赛克,究其原因是录像的第一帧不是关键帧,所以需要录像是需要判断第一帧是否是关键帧,方法有两种,第一种是原码流的基础上查找,第二种是将原码流传递给ffmpeg让ffmpeg判断key_frame,第二种相对简单,但是由于这样一来录像和解码视频切合的太紧密,之后修改比较麻烦,所以选择第一种方案,查看注释1可以明白如何检测h264码流的关键帧,下面原创 2013-04-23 09:32:05 · 7368 阅读 · 1 评论 -
Android播放声音SoundPool、MediaPlayer、AudioTrack
Android平台中关于音频播放有以下三种方式: 1.SoundPool ---- 适合短促且对反应速度比较高的情况(游戏音效或按键声等) 2.MediaPlayer ---- 适合比较长且时间要求不高的情况 3.AudioTrack ---- 播放解码后的PCM码流 方法一:SoundPool1)SoundPool简介 SoundP原创 2013-04-24 12:48:41 · 15086 阅读 · 0 评论 -
android开发过程中遇到的小问题
1、在编写xml布局的时候,总是提示[Accessibility] Missing contentDescription attribute on image的警告信息解决方法:<ImageView android:layout_width="210dp" android:layout_height="32dp" android:layout_centerHo原创 2013-04-22 11:42:06 · 1405 阅读 · 0 评论 -
H264 获取SPS与PPS(附源码)
原文链接:http://blog.csdn.net/zgyulongfei/article/details/7538523在用Android手机进行h264硬编码的时候如果要进行视频流的实时传输与播放,就需要知道视频流的Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)。今天算是看明白如何获取SPS和PPS,在这里记转载 2013-04-16 15:48:41 · 5981 阅读 · 0 评论 -
android 使用libjpeg-turbo将yuv2jpeg图像
要将yuv2jpeg图像则需要两个准备,一、准备libjpeg-turbo库,可以查看之前android 编译libjpeg-turbo文章,二、调用libjpeg-turbo代码,可以查看源码中的Exception.c文件,也可以看之前的使用libjpeg对图像进行压缩文章,下面就是根据这两篇文章来编写调用libjpeg-turbo库来实现yuv2jpeg的功能。1、将h264解码成yuv我原创 2013-04-16 10:35:50 · 12779 阅读 · 1 评论 -
android 编译libmad
之前项目里面需要转歌曲,不过是通过java来实现的比较慢,最近有时间在网上查看mp3解码,找到libmad,能够实现mp3的解码,所以编译成库测试一下性能。1、下载源码,到官网 http://sourceforge.net/projects/mad/files/libmad/0.15.1b/ 现在最新的版本是libmad-0.15.1b2、解压下载的文件,进入并创建jni目录,然后将里面的原创 2013-04-16 14:54:29 · 5071 阅读 · 7 评论 -
android 虚拟摇杆图片版
在之前A single virtual joystick development使用的圆盘和摇杆都是使用颜色来实现的,但是在实际的开发过程中,这并不美观,所有在这使用图片替换之前使用颜色的圆盘和摇杆,两者之间的区别在于,使用颜色绘制使用的是中心点作为坐标,而使用图片则使用的是左上角作为坐标,所以这里需要进行转换,同时注意的就是图片的宽度问题,里面计算的都是使用的像素,而你一开始将图片转化为bitm原创 2013-04-23 14:51:07 · 5126 阅读 · 0 评论 -
android yuv2rgb方案
之前项目里面需要解码h264视频,使用的是ffmpeg,解码出来的是yuv,最好的显示方法是通过opengl es 2.0来实现视频的显示,如果不会opengl es 2.0的话,那么就必须将yuv2rgb然后在绘制图像,而yuv2rgb我只知道两种方法1.通过ffmpeg里面的sws_scale来实现,不过这种方法比较慢,2.这是我之前使用的方法在http://wss.co.uk/pinknoi原创 2013-04-18 09:16:57 · 5766 阅读 · 10 评论 -
Mp4v2实现h264+aac打包成Mp4视频文件
使用mp4v2实现录制mp4视频,需要准备如下信息:1、获取mp4v2源码并编译成库文件,对于mp4v2的编译可以看前面的文章android 编译mp4v2 2.0.0生成动态库;2、获取h264数据中的sps和pps数据,如果不会的话可以查看前面的文章 点击打开链接;3、获取音频解码信息,在调用MP4SetTrackESConfiguration使用,具体的获取方式一种通过f原创 2013-04-27 11:27:09 · 18513 阅读 · 21 评论 -
Android 竖直的滑竿
最近项目里面要添加一个竖直的滑竿,最初是想重写SeekBar来实现的,虽然最终实现了,但是适应性不好,所以为了适应不同的设备,所以通过SurfaceView来实现绘图方式,下面就是具体的步骤:首先编一个实现滑竿功能的类,这里我命名为:AppVerticalSeekBar代码如下:package com.zhangjie.verseekbar;import android.conte原创 2013-05-03 16:37:53 · 2787 阅读 · 0 评论 -
anroid 利用方向传感器或者加速度传感器实现手机或者平板6个方向操作
最近项目里面要实现android设备6个方向操作远程设备移动,首先想到的是方向传感器,但是由于android设备的多样性,在测试过程中并不是所有的设备都有方向传感器,当没有方向传感器的话,就使用加速度传感器来实现,但是有一个缺点就是当水平移动的时候,就会有错误,其次就是项目中程序规定是横屏,然后手机和平板第一方向是不同的,手机默认竖屏正方向为0,现在横屏则方向为1,而平板默认就是横屏的,所以横屏正原创 2013-05-10 14:17:37 · 1962 阅读 · 0 评论 -
Android本地视频播放器开发--SDL编译
在上一章 Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)中使用OpenSL ES来播放视频的声音,遗留的问题是声音的不同步,由于视频实现部分也要同步,而且音视频也要同步,所以音频部分就不单独同步问题,当同时播放音视频的时候进行两者的同步问题,对于视频显示部分最后是要使用OpenGL es来实现,由于SDL可以和OpenGL ES进行搭配,所以使用SDL+Op原创 2013-06-13 12:12:31 · 16621 阅读 · 7 评论 -
Android本地视频播放器开发--搜索本地视频(2)
在Android本地视频播放器开发--搜索本地视频(1)中我们获取了本地视频的数据,在这一章里面,我们将获取的数据通过LIstView来动态的实现出来。1、首先介绍布局代码,主布局代码只含有一个LIstView --jie_video.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android原创 2013-06-05 09:36:05 · 24277 阅读 · 20 评论 -
Android本地视频播放器开发--搜索本地视频(1)
这一章的主要内容是搜索手机本地视频,添加到ListView列表里,每一个表项含有这个视频的缩略图,视频的播放时间,视频的标题,在搜索本地视频(1)中我们先制作搜索功能。Video.java--视频相关的属性类package com.zhangjie.graduation.videopalyer.videofile;import java.io.Serializable;import原创 2013-06-05 09:22:13 · 21734 阅读 · 16 评论 -
Android本地视频播放器开发--NDK编译FFmpeg
在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片、标题、时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获取到视频后,那么接下来就是解码视频,解码视频我使用的是ffmpeg,所以这张就是使用NDK编译手机可以使用的FFmpeg库。首先到官网http://ffmpeg.org/download.html原创 2013-06-06 13:23:13 · 20439 阅读 · 17 评论 -
Android本地视频播放器开发--ffmpeg解码视频文件中的音频(1)
在上一章中Android本地视频播放器开发--NDK编译FFmpeg能够获取编译出来的ffmpeg库,接下来就是调用ffmpeg来实现解码,这里我们先解码音频,然后在播放音频,同时为了适应性我会用不同的方法进行播放例如使用Android提供的AudioTrack,SDL、OpengAL,OpenSL ES,最终合入视频播放器的是OpenSL ES,这样可以减少CPU的利用率。接下来在这一章中,原创 2013-06-07 13:00:53 · 19026 阅读 · 19 评论 -
Android本地视频播放器开发--视频解码
在上一章Android本地视频播放器开发--SDL编译编译中编译出sdl的支持库,当时我们使用的2.0,但是有些api被更改了,所以在以下的使用者中我们使用SDL1.3的库,这个库我会传上源码以及编译出的库,接下来这张我们使用ffmpeg解码视频文件中的视频帧同时使用SDL去显示。1、Decodec_Video.c 这是我视频解码的文件,其中内容如下:#include #include原创 2013-06-17 13:49:42 · 19299 阅读 · 17 评论 -
Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)
在Android本地视频播放器开发--ffmpeg解码视频文件中的音频(1)中我们从视频文件中解码出音频,这一章中将使用OpenSL ES来播放解码的音频数据,首先关于OpenSL ES这里暂不介绍,可以查看官网以及NDK中samples下面的native-audio里面的文件,这里我也是扣取了其中的代码,我们播放音频的部分在上一章的基础上进行添加的,代码如下:#include #i原创 2013-06-08 15:33:57 · 15557 阅读 · 9 评论 -
Android性能优化---布局优化
我们从事Android开发编写布局的时候大多数是使用XML来布局,这给我们带来了方便性,这样操作可以布局界面的代码和逻辑控制的Java代码分离出来,使程序的结构更加清晰、明了。特别的复杂的布局,但是这样操作也同样带来了另一些问题,例如屏幕的适应性,大多数Android开发人员都会遇到这个问题,还有一个就是内容问题,如果使用xml布局,Android的虚拟机首先解析xml布局,然后加载内存,如果布局原创 2013-06-18 14:44:34 · 4195 阅读 · 0 评论 -
Android本地视频播放器开发--简易播放器原型
在以前的基础上,将音视频进行合并,音频播放采用OpenSL ES,视频播放采用OpenGL ES2.0进行显示,这次的版本其中音频和视频是在同一个线程,会造成音频断断续续,后续会采用音频使用SDL,视频采用SDL+OpenGL ES2.0,这部份代码会在之后开源,现在只提供库用来测试。可以使用git clone https://github.com/jwzhangjie/Graduation.gi原创 2013-06-19 13:29:05 · 22349 阅读 · 11 评论 -
android抽屉+滑动
最近在项目里面需要做一个类似抽屉的功能,同时抽屉的内容的组件能够实现滑动功能,这里实现这个功能:首先设计布局代码,代码如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"原创 2013-07-06 21:31:58 · 5179 阅读 · 0 评论 -
解决android中HorizontalScrollView的滚动事件与组件的Touch冲突问题
在上一章中我们实现了抽屉+滚动功能,但是遗留了一个问题就是滚动事件与组件的Touch事件冲突,接下来我们看一下他们冲突的原因public boolean onInterceptTouchEvent (MotionEvent ev)使用此方法可以拦截所有触摸屏动作引发的事件。这意味着你可以监视分派给子项的事件,并且可以拿到任何当前手势的所有权。使用此方法需谨慎。因为它与View.onTo原创 2013-07-06 21:51:19 · 11019 阅读 · 1 评论 -
解决android中HorizontalScrollView的滚动事件与组件的Touch冲突问题 --- 修正版
在上一章 中的解决android中HorizontalScrollView的滚动事件与组件的Touch冲突问题 这一篇文章中虽然组件能够在滑动的时候检测到up事件,但是无法滑动,而在这里我们可以用另一种方法来实现,那就是当我们touch的时候,在MotionEvent中有一种情况就是MotionEvent.ACTION_CANCEL,这个事件是指Touch事件的取消通知,这样我们虽然无法捕获up事原创 2013-07-06 23:00:30 · 7053 阅读 · 1 评论 -
VLC视频播放器开发--VLC for Android编译
VLC播放器是一款优秀的开源播放器,可以播放MPEG-1、MPEG-2、MPEG-4、DivX、DVD/VCD、数字卫星频道、数字地球电视频道(digital terrestial television channels)、在许多作业平台底下透过宽频 IPv4、IPv6网络播放线上影片。此软件开发项目是由法国学生所发起的,参与者来自于世界各地,设计了多平台的支持,可以用于播放网络串流及本机多媒体档原创 2013-06-22 12:37:47 · 6537 阅读 · 0 评论 -
android图片内存溢出问题-1
社区资源:Android有效解决加载大图片内存溢出问题及优化虚拟机内存http://www.eoeandroid.com/thread-159376-1-1.htmlAndroid 内存溢出解决方案(OOM) 整理总结(转)http://www.eoeandroid.com/thread-199583-1-1.htmlandroid避免内存溢出http://www.eoea转载 2013-06-24 08:51:40 · 2045 阅读 · 0 评论 -
Android中多线程下载
public class MainActivity extends Activity { // 声明控件 // 路径与线程数量 private EditText et_url, et_num; // 进度条 public static ProgressBar pb_thread; // 显示进度的操作 private TextView tv_pb; // 线转载 2013-06-25 23:19:43 · 1121 阅读 · 0 评论 -
Android GridView 设置指定项被选中的背景图片并滚动到指定项(如果带有滚动条)
MainActivty.java[java] view plaincopyprint?@Override public void onCreate(Bundle savedInstanceState) { // ...省略的代码 /** * 设置滚动到指定项的方法 */ scView = (Horizont转载 2013-06-26 23:05:08 · 1915 阅读 · 0 评论 -
adb shell dumpsys 命令 查看内存
android程序内存被分为2部分:native和dalvik,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 native+dalvik 不能超过最大限制。android程序内存一般限制在16M,当然也有24M的。 用以下命令可以查看程序的内存使用情况: adb shell d转载 2013-06-25 23:08:13 · 1337 阅读 · 0 评论 -
adb logcat 查看日志
使用logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是:[adb] logcat [option>] ... [filter-spec>] ... 下文介绍过滤器和命令选项,详细内容可参见Listing of logcat Command Options。 可以在开发机中通过远程shell的方式使用logcat命令查转载 2013-06-25 23:09:45 · 1336 阅读 · 0 评论 -
Android GridView 一行显示数据(包括图片和文本),解决的办法是计算数据占该行的宽度是多少
package com.treasure.ui; import android.app.Activity; import android.os.Bundle; import android.widget.GridView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutPara转载 2013-06-26 23:03:50 · 1910 阅读 · 0 评论 -
SIP for android
目录 [隐藏] 1 会话发起协议1.1 条件和限制1.2 SIP API类和接口1.3 创建Manifest文件1.4 创建一个SipManager对象1.5 在SIP服务器上进行注册1.6 拨打一个语音电话1.7 接收呼叫1.7.1 实现BroadcastReceiver的子类1.7.2 创建一个用来接收呼叫的intent过滤器1.8 测试SIP应用程序转载 2013-07-14 18:04:12 · 16450 阅读 · 5 评论 -
android自定义实现抽屉SlidingDrawer的功能
最近项目中需要实现上拉功能,首先想到的就是Android本身自带的抽屉SlidingDrawer,最后也实现了不过,出现的问题就是设置背景色问题,handler和content是两个不同的部分,这就造成图片要做成两部分,从而产生两个部分图片看起来不是一个整体,而且我这个上拉功能,里面要实现一个水平滚动功能,而SlidingDrawer还有其他的限制,同时官方给出api 17以后,这个功能已经废弃,原创 2013-07-15 16:28:50 · 6733 阅读 · 4 评论 -
android 按字母搜索
在看Oplayer的时候看见滑动字母来实现listView的内容搜索,所以就把里面的核心的函数扣除来做了一个demo,分为两部分一个是布局,另一个就是代码了,具体的如下:布局:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_par原创 2013-07-17 13:51:04 · 1868 阅读 · 0 评论