我是一名大二的学生,决定走java方向,但是不知道是做andriod 开发教程开发还是java web

随笔分类 - Android
摘要: 用来获取sd卡和系统/data分区的使用情况,包括:总的空间大小、可用空间、已用空间。package com.schogini. import java.io.F import android.content.C
import android.os.E
import android.os.StatFs; public class CheckStore { private static S public static String checkSD(Context contect){ ...
andriod2012 阅读(196) |
摘要: OpenGL ES 中Depth Buffer 保存了像素与观测点之间的距离信息,在绘制3D图形时,将只绘制可见的面而不去绘制隐藏的面,这个过程叫”Hidden surface removal” ,采用的算法为”The depth buffer algorithm”。一般来说,填充的物体的顺序和其顺序是一致的,而要准确的显示绘制物体在Z轴的前后关系,就需要先绘制距离观测点(ViewPoint)最远的物体,再绘制离观测点较远的物体,最后绘制离观测点最近的物体,因此需要对应所绘制物体进行排序。OpenGL ES 中使用Depth Buffer存放需绘制物体的相对距离。The depth buffe
andriod2012 阅读(78) |
摘要: 以前看这个函数的时候,对min frame是如何计算得来的,并不是很了解。今天又看了看,终于有点头绪了。status_t AudioTrack::getMinFrameCount( int* frameCount, int streamType, uint32_t sampleRate)
{ int afSampleR if (AudioSystem::getOutputSamplingRate(&afSampleRate, streamType) != NO_ERROR) { return NO_INIT...
andriod2012 阅读(675) |
摘要: 最近在看Android中播放延迟的问题,看了下代码,发现AudioTrack类中的函数latency有以下注释: /* Returns this track's latency in milliseconds. * This includes the latency due to AudioTrack buffer size, AudioMixer (if any) * and audio hardware driver. */够强大,前几天自己还叭叭根据buffer计算延迟呢,原来可以调个函数就搞定。看看函数AudioTrack::latency()的实现...
andriod2012 阅读(372) |
摘要: 自定义滚动条样子:在ListView中添加属性:android:scrollbarTrackVertical=&@drawable/scrollbar_vertical_track&android:scrollbarThumbVertical=&@drawable/scrollbar_vertical_thumb&scrollbar_vertical_track,crollbar_vertical_thumb自定义的xml文件,放在Drawable中,track是指长条,thumb是指短条,然后再xml中定义短条和长条的样式不让滚动条消失,一直出现:an
andriod2012 阅读(72) |
摘要: 项目需要用到垂直的Seekbar来控制一些特效,现在记录一下垂直的Seekbar:效果图如下:源码下载地址:http://download.csdn.net/detail/zshq52530
andriod2012 阅读(159) |
摘要: 本包中定义了各种二维几何图形。基本上是参照Java SE 中相应类来定义实现的。PathIterator路径元素枚举类。IShapeShape接口定义了二维图形的一些基本方法。AffineTransform仿射变换类。Arc圆弧类。Area二维区域类。CubicCurve三次曲线类。Dimension二维图形大小类。Ellipse椭圆类。FlatteningPathIterator平滑变换路径枚举类。Path路径类。Line线段类。Point二维点。Polygon多边形。Polyline多义线。QuadCurve四次曲线类。Rectangle矩形类。RectangularShape具有矩形外框
andriod2012 阅读(24) |
摘要: 这个例子和Translucent不同的一点是Blur,也就是显示在当前Activit背后的其它Activity以模糊方式显示。这是通过window对象Flag来设置的。getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);其它设置Theme和Translucent示例一样。
andriod2012 阅读(40) |
摘要: &?xml version=&1.0& encoding=&utf-8&?&
&resources& &string-array name=&launger&& &item&date1&/item& &item&date2&/item& &item&date3&/item& &/string-array&
&/resources&在代码里使用:R res=this.getResou
andriod2012 阅读(15) |
摘要: dialog标题居中问题:用系统的AlertDialog.Builder创建dialog时,如果需要将dialog的title居中显示,需要调用.setCustomTitle(Viewview)方法,对需要设置的view设置居中的相关属性即可实现该效果,dialog的整体展示效果需要根据自己的要求调整,当然也可以用newDialog(Contextcontext,inttheme)的方式实现,theme需要自己定义。如下:&?xml version=&1.0& encoding=&utf-8&?&
&resources& &
andriod2012 阅读(374) |
摘要: 在android里,我们调用系统的方法创建和显示dialog,同时dialog的内容是动态变化的(同一个id的dialog每一次调用showDialog时),发现内容总是显示第一次的东西,怎么实现dialog的内容动态变化呢?解决方案:除了在创建dialog时动态的改变内容,我们还要做一件事情,在调用showDIalog之前调用removeDialog方法或者在prepareDialog里调用removeDialog。 据说在prepareDialog里也可以实现该效果,没具体测试。
andriod2012 阅读(21) |
摘要: 入职一周了,说下工作中遇到的问题及解决方案。listview指定item获取焦点的问题:这里需要我们自己定义一个adapter,在getview方法里添加我们的判读逻辑(让listview指定的item获取焦点),让返回的view去掉用view.requestFous,并对listview.setSelection(pos),pos为指定的item,同时要注意鼠标点击操作出现listview会使焦点丢失(不会出现在item上)现在是做的智能电视的项目,需要电视支持:鼠标、键盘、遥控器
andriod2012 阅读(138) |
摘要: OpenGL ES 中的FrameBuffer 指的是存储像素的内存空间。对应一个二维图像,如果屏幕分辨率为 ,如果屏幕支持24位真彩色 (RGB),则存储这个屏幕区域的内存至少需要个字节。此外如果需要支持透明度(Alpha),则一个像素需要4个字节。对应3D图像来说,上面存储显示颜色的Buffer称为Color Buffer,除Color Buffer之外,还需要存储每个像素和View Point之间的距离,OpenGL ES中使用Depth Buffer 存储像素与眼睛(eye 或是view point)的距离,Depth Buffer也可称为z B
andriod2012 阅读(283) |
摘要: 1.在AndroidManifest.xml配置文件的&application&标签中加入: &uses-library android:name=&android.test.runner& /& &application&标签外面加入: &uses-permission android:name=&android.permission.RUN_INSTRUMENTATION& /& &instrumentationandroid:name=&android.test.Instrumenta
andriod2012 阅读(35) |
摘要: 定义平台无关二维图形库类定义。其功能和Java SE 中 Graphics2D或是 .Net 中System.Drawing 功能类似。提供Drawing包的的主要原因是部分移动平台自带的二维图形库功能比较弱。比如Java ME 平台上不支持线宽大于1的画笔等等。Brush画刷类。Color颜色类。Graphics2DGraphics2D 提供各种绘图功能。LinearGradientBrush线性渐变画刷类。Pen画笔类。RadialGradientBrush环状渐变画刷类。SolidBrush单色画刷类。TextureBrush材质画刷类。
andriod2012 阅读(21) |
摘要: Activity分类示例的最后几个例子是来显示半透明Activity。例子大同小异。实现Activity的半透明效果主要是通过Style和Theme来实现的。看看TranslucentActivity 在AndroidManifest.xml中的定义:&activity android:name=”.app.TranslucentActivity”android:label=”@string/activity_translucent”android:theme=”@style/Theme.Translucent”&&intent-filter&& action a
andriod2012 阅读(512) |
摘要: OpenGL ES 只能通过绘制三角形来构造几何图形,比如前面绘制的20面体Android OpenGL ES 开发教程(12):绘制一个20面体,通过增加正多面体的边数,就可以构造出一个球体:在项目中创建一个Sphere 类,它的Draw 方法,通过绘制三角形来构造球体,并且为其添加法线,法线主要用于光照效果,将在后面介绍。public void draw(GL10 gl) { float theta, float co, float r1, r2; float h1, h2; float step = 2.0f; float[][...
andriod2012 阅读(517) |
摘要: OpenGL ES 使用也只能使用三角形来定义一个面(Face),为了获取绘制的高性能,一般情况不会同时绘制面的前面和后面,只绘制面的“前面”。虽然“前面”“后面”的定义可以应人而易,但一般为所有的“前面”定义统一的顶点顺序(顺时针或是逆时针方向)。 只绘制“前面”的过程称为”Culling”。下面代码设置逆时针方法为面的“前面”:gl.glFrontFace(GL10.GL_CCW);打开 忽略“后面”设置gl.glEnable(GL10.GL_CULL_FACE);明确指明“忽略“哪个面的代码如下:gl.glCullFace(GL10.GL_BACK);
andriod2012 阅读(136) |
摘要: Sumsung Galaxy Nexus 屏幕分辨率为 ,但通常的应用都会显示Navigation Bar(Back 键,Home 键等),如下图所示:但我注意到Youtube应用在问触摸事件时,会自动隐藏Navigation Bar,全屏播放影片。网上有使用定制ROM的方式实现全屏。但如果你想实现和Youtube类似的方法自动隐藏Navigation Bar,全屏显示应用,简单的方法如下:在OnCreate方法中使用。myview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);其中的myview 可以为
andriod2012 阅读(66) |
摘要: 本包提供了路口到路口实时导航API,从地图服务器返回的路径信息含有文字和路径的地理坐标信息,类NavigationEngine根据路径和当前坐标实现实时导航。它内部含用三个工作线程:Location Monitor 实时监视当前位置坐标是否偏离路径,如果偏移,决定是否需要重新计算路径。语音命令生成 根据当前路径和位置预先生成语音命令列表。语音命令处理 从预先生成语音命令列表选取一个命令并通知回调函数。下图是Navigation Engine的一个 简明状态机转换图下图为Gis.Navigation包中类定义WayPoint定义导航路径结过点。NavigationEngine导航核心类,并提供模
andriod2012 阅读(13) |
摘要: 当要设置一个闹钟时,可以把数据放在Intent里,再用intent对象生成一个PendingIntent对象,然后用AlarmManager 来邦定PendingIntent对象设置闹钟,具体代码如下:Intent intent = new Intent(context, AlarmReceiver.class); intent.putExtra(&id&, alarm.getId()); intent.putExtra(&weekday&, getCurrentWeekday()); PendingIntent pendingIntent = Pend
andriod2012 阅读(172) |
摘要: 最近在做一个闹钟的项目,当闹钟响起的时候需要用到自动解锁和点亮屏幕,因此记录一下解屏幕锁与点亮屏幕的代码:KeyguardManagerkm=(KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);//得到键盘锁管理器对象KeyguardLockkl=km.newKeyguardLock(&unLock&);//参数是LogCat里用的Tagkl.disableKeyguard();//解锁PowerManagerpm=(PowerManager)getSystemService(Context.POWER_S
andriod2012 阅读(65) |
摘要: 最近在搞广告联盟的SDK和4.0的Launcher。目前呢广告联盟的sdk还没正式上线,正在测试,如果没有大的问题,估计会在近期上线测试。要搞4.0的launcher需要把SDK升级到4.0(当然还有ADT等),不然项目导入是会有很多的红叉(蛋都碎了),SDK升级到4.0以后发现,以前的一些完好的项目出错了(出现红叉)且以前正常运行的项目在4.0的系统上跑出现bug。sdk4.0做了很大的变动,但是又没有找到什么变更的说明文档,这对于我这种低水平的开发者而言,真的是灾难性的,以前的项目的版本适配怎么搞,蛋都没了......SDK4.0和以前版本的兼容问题需要大家认真测试。下面继续说4.0的la
andriod2012 阅读(283) |
摘要: 最近学习了一下3D相册的代码,发现LinearGradient类可以来实现图片倒影的渐变效果(图片是网上找的,仅供参考),下面记录一下该用法:LinearGradient是实现线性渐变的效果,用法如下: Paint p=new Paint(); //生成画笔对象 LinearGradient lg=new LinearGradien(0,0,100,100,Color.RED,Color.BLUE,Shader.TileMode.MIRROR);//生成 LinearGradient 对象 参数一:为渐变起点坐标的x轴位置, 参数二 :为渐变起点坐标的y轴位置, 参数三 :为渐变终点坐标的x.
andriod2012 阅读(68) |
摘要: AudioTrack::setMarkerPosition函数的使用方法这两天在调查一个问题,就是想知道一段音频是什么时候播放结束的。查了些资料,知道AudioTrack类中有一个setMarkerPosition函数。在构造AudioTrack对象的时候,传一个回调函数指针,然后再通过setMarkerPosition函数设置一个响应点,当播放到这一点时,回调函数就会被执行。回调函数的类型如下:typedef void (*callback_t)(int event, void* user, void *info);开始使用了如下的一种方法: if (NULL == mAudioOut...
andriod2012 阅读(55) |
摘要: 用C++ AudioTrack播放超短文件所谓的超短文件,就是特别短的文件。有多短?就是比min buffer还短。用过Android中AudioTrack的大虾都应该对min buffer不陌生。Java中可以通过调用函数getMinBufferSize获得。C++中可以通过调用getMinFrameCount函数,然后算的。超短文件播放有个什么问题呢,就是超短文件写进去,min buffer都没塞满。而刚开始播放的时候,audio_track_cblk_t对象中的buffer不被塞满的话是不会开始播放的。所以,导致的结果就是,刚开始几次,write和start后,根本没任何效果。然后,后面
andriod2012 阅读(25) |
摘要: 有一周没有更新博客了,主要是因为这周没什么任务,其次呢不知道该写点什么。还是说的基础吧。言归正传,Activity有四种加载模式:(我开始不知道,后来也是看了篇博客才清楚)standardsingleTopsingleTasksingleInstance设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性:&activity android:name=&ActB& android:launchMode=&singleTask&&&/activity&standard
andriod2012 阅读(24) |
摘要: 转载地址:http://blog.csdn.net/chaimingkun/article/details/6894813Android 4.0 是一次重要的平台发布版,为用户和应用程序开发者增加了大量的新特性。在下面我们将讨论的所有新特性和API中,因为它将 Android 3.x 版本中广泛使用的API和全息图像主题带给了小屏幕设备,因此我们说 Android 4.0 是一次重要的平台发布版。作为一名开发者,现在你拥有了单一的平台和统一的 API 框架,使你可以开发,并通过一个APK 来发布你的应用程序,并且可以为运行相同版本 Android(Android 4.0[API级别14]或以上
andriod2012 阅读(2574) |
摘要: android手机客户端在上传文件时,有时候会一直失败,其可能的原因是APN的设置。wap下的成功率极低,所以在进行文件上传时最好设置下apn为net形式。下面是我在网上找的一些代码,是由wap转net的,当然net转wap稍微修改下就可以。经测试是可用的,分享一下:PS:apn的切换过程需要时间,不是立即生效。package com.android. import java.util.ArrayL import android.content.ContentR
import android.content.ContentV
andriod2012 阅读(342) |
摘要: 最近在搞广告平台的插件,为了防止某些开发者在模拟机上刷数据,这就需要我们区分一下当前使用的是模拟机还是真机,在网上百度了一下,找到了一段代码,简单的测试了一下是可以达到我们的目的的(不过LD说这种方式不行,有漏洞),所以我先把我的代码贴一下,坐等我LD的方案。获取手机的设备编号,模拟机的是000 TelephonyManager telmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String deviceID = telmgr.getDeviceId(); ...
andriod2012 阅读(39) |
摘要: 1、Activity的生命周期情形一、一个单独的Activity的正常的生命过程是这样的:onCreate-&onStart-&onPause-&onStop-&onDestroy。例如:运行一个Activity,进行了一些简单操作(不涉及页面的跳转等),然后按返回键结束。情形二、有两个Activity(a和b),一开始显示a,然后由a启动b,然后在由b回到a,这时候a的生命过程应该是怎么样的呢(a被b完全遮盖)?a经历的过程为onCreate-&onStart-&onResume-&onPause-&onStop-&onRestart-&
andriod2012 阅读(2383) |
摘要: 接上一篇彩信的拦截与发送当我们的手机装上360的时候,每次拦截他都提前拦截到,为什么呢?难道还有更高的权限?经过反编译360的apk发现拦截的权限是一样的,那么这一因素可以排除了。因为我们的拦截软件装的晚?经过测试,貌似是这样,但是当我们机子重启后,发现我们又落后了,这是什么原因。。。。好吧,我忍,继续看反编译的后的apk,发现他们是开机启动的,然后在定睛一瞧,哈哈哈,开机启动的权限他使用的默认值,这我只能说:so easy。咱也来个开机启动,并且,咱权限稍微设高点就可以翻过那道小篱笆了。当然,如果已经安装360了,需要重启后我们的拦截软件才能先于360拦截到,当然了,android的手机电量
andriod2012 阅读(259) |
摘要: 今天来看看Android中的录音数据是怎么来的。从AudioRecord开始看吧。AudioRecord中可以取得录音数据的接口是:AudioRecord::read。首先调用函数obtainBuffer取得录音数据的地址。然后用memcpy将录音数据copy出来。看样子,数据来源是obtainBuffer函数了。来看看函数AudioRecord::obtainBuffer。其主要功能就是对传入的audioBuffer进行赋值。audioBuffer是Buffer* 类型。看看Buffer类: class Buffer { public: enum { MUTE = 0...
andriod2012 阅读(38) |
摘要: 转载地址:http://blog.csdn.net/aniuaniuaniuaniu/article/details/7225967最近几天,因为项目需要,发彩信界面不再是调用系统的界面,即不跳转到短信界面,这个功能起初感觉应该很简单,但是真正做起来后,发现其实没有想象中那么简单,刚做完项目,趁头脑清晰,先把代码写下来先:这几天为了这个项目,网上找了不少资料,大都资料都差不多,对于如何不跳用系统界面发彩信都有讲解,但是这个的前提是apn必须是wap,当如果是net时,因为连接超时而无法发送,正以内发彩信必须通过wap接入点才能发送,即使是在系统界面发彩信时,如果接入点不是wap,则会自动切换过
andriod2012 阅读(36) |
摘要: 前段时间(已经过去两个月了....)公司让搞一下android彩信的拦截与发送,于是就在网上找了一些资料,开始研究它的实现过程。PS:需要从系统源码中扣取部分文件,大概在30个左右,不知道能不能精简,没认真看过。这里我重点说一下彩信的拦截和解析,因为彩信解析方面的资料相对较少。发送的部分我会提供一下我的参考文章,并且可能会转载一下这篇文章,我就是通过这篇文章实现的彩信发送。因为代码量比较大,所以就只贴下关键源码,并且说下流程和要注意的问题。仔细搜索一下的话网上可以找到相关的demo和资料(主要是彩信发送方面的,解析的好像没有),但是在使用时要注意,他们说的并不是全对的,某些方面给你误导了,他们
andriod2012 阅读(180) |
摘要: MediaPlayer那边就不看了,从AudioTrack开始研究。1、AudioTrack::write函数调用函数obtainBuffer获取到一块buffer,然后把传入的数据copy到获取的buffer中。2、AudioTrack::obtainBuffer函数该函数的主要功能就是对传入的audioBuffer进行赋值。看看audioBuffer的类型:class Buffer { public: enum { MUTE = 0x }; uint32_ int channelC int ...
andriod2012 阅读(1276) |
摘要: 使用MODE_STATIC模式的AudioTrack时,遇到了播放不正常的问题。使用比较短的文件,发现开始几次,声音都没出来,到最后一次,感觉是把前面几次积累的声音一次播放出来了。后来查了下资料,发现使用MODE_STATIC模式的AudioTrack的方法不对。正确使用的方法如下:... if (NULL == mAudioOut) { ... mAudioOut = new AudioTrack(AudioSystem::TTS, VP_WAVEFILE_SAMPLERATE, AudioSystem::PCM_16_BIT, AudioSystem::CHANNEL...
andriod2012 阅读(86) |
摘要: 在使用android手机的时候,尤其是在操作软件设置时,我们经常见到这样的界面:这是怎么来实现的的呢?其实android已经提供了相应的类和方法,当进行简单数据存储时(比如:软件配置参数)android推荐使用Preferences,当然如果想提供操作界面的话就要用到PreferencesActivity。我这里先做个小例子对来简单说明一下使用方法,由于没做准备,可能讲的不系统,以后补上。首先:新建一个android工程,在其res文件夹下新建一个xml文件夹,用来存储我们的PreferencesActivity需要展示的界面。然后在xml文件夹下新建一个xml文件,名字随意去,这里我建的名字
andriod2012 阅读(695) |
摘要: 最近在搞广告平台的一些东西,看了一下别的广告平台的jar包,基本上都会有一个Activity用来显示web网页,用到了一个用来显示网页的组件--WebView。但是其网页的加载进度就不受我们控制了,所以当网页数据很多时就可能会很慢才会显示,这样的用户体验不好,如果能够有一个进度提示就好些了,在网上搜到了一篇博文,用来解决此问题。所以发出来供大家参考。当然了这篇博文其实相当于转载,因为我没怎么添加新的内容,惭愧啊。首先贴上我的效果图,如下:加载完成后的图片:代码很少,基本是一个方法的事,具体如下:import android.app.Aimport android.app.Pro
andriod2012 阅读(27) |
摘要: BroadcastReceiver 用于异步接收广播Intent。主要有两大类,用于接收广播的:正常广播 Normal broadcasts(用 Context.sendBroadcast()发送)是完全异步的。它们都运行在一个未定义的顺序,通常是在同一时间。这样会更有效,但意味着receiver不能包含所要使用的结果或中止的API。 有序广播 Ordered broadcasts(用 Context.sendOrderedBroadcast()发送)每次被发送到一个receiver。所谓有序,就是每个receiver执行后可以传播到下一个receiver,也可以完全中止传播——不传播给其他r
andriod2012 阅读(15) |
摘要: 1.默认效果//代码Toast.makeText(getApplicationContext(), &默认Toast样式&, Toast.LENGTH_SHORT).show();2.自定义显示位置效果//代码toast = Toast.makeText(getApplicationContext(), &自定义位置Toast&, Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show();3.带图片效果//代码toast = Toast.makeText(getApp
andriod2012 阅读(35) |
摘要: 阴影制作:包括各种形状(矩形,圆形等等),以及文字等等都能设置阴影。阴影制作是什么原理呢?其实很简单,你需要设置阴影的东西被看作一个主层。然后在主层下面画一个阴影层。阴影制作涉及到一个重要函数:public void setShadowLayer(float radius, float dx, float dy, int color)radius:阴影半径dx:X轴方向的偏移量dy:Y轴方向的偏移量color:阴影颜色注意:如果半径被设置为0,意思就是去掉阴影。具体实现:package xiaosi.textSimport android.app.Aimport .
andriod2012 阅读(3993) |
摘要: 开机动画的制作,先要从bootanimation.zip这个压缩包说起,从网上随便下载一个动画包,解压后可以得到part0 part1和desc.txt,其中desc.txt最重要,打开desc.txt我们可以看到其中480 852意思是说你开机动画在屏幕先以多少的分辨率显示,我的是480 852,那么不论图片大小、比例都会按照这个分辨率来播放,所以制作的时候请注意,就算要修改也要按照比例来(最大不要超过480 852)。后面的25代表的是帧数,添多少,每秒就按这个数来播放图片!通俗的说就是图片的播放速度。(小提示中国的电视帧数都是25,而欧美的是29)part0 part1的作用请看下面p
andriod2012 阅读(993) |
摘要: SimpleAdapter simpleadapter = new SimpleAdapter(this, bookList, R.layout.mylistitem,new String[]{&bookName&,&path&}, new int[]{R.id.bookName,R.id.bookPath}); listView.setAdapter(simpleadapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public v...
andriod2012 阅读(283) |
摘要: /* * searchFile 查找文件并加入到ArrayList 当中去 * @String keyword 查找的关键词 * @File filepath 查找的目录 * */ private void searchFile(String keyword,File filepath) { //判断SD卡是否存在 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { File[...
andriod2012 阅读(212) |
摘要: Eclipse的功能就不用说,用过的都对它有所了解.可是你有没有注意到别人在输入代码时是一直都有代码提示呢?是不是感到有些郁闷,为什么我的不行的.下面我们就把自己的也设置成这样:1.打开Eclipse2.打开&选项&对话框(Windows-&Preferences...) 3.依次打开&Java-&Editor-&Content Assist&在&Auto-Activation&t选项框中可以看到 Auto activation delay://表示自动提示时间,一般设置为40左右(默认的是200) Auto act
andriod2012 阅读(504) |
摘要: 最近在写Android的Audio代码时发现,setStreamMute对一些stream type没有效果。例如alarm stream。后调查发现,在set stream mute的时候会调用函数isStreamAffectedByMute来判断指定的stream是否可以mute。函数isStreamAffectedByMute中使用mMuteAffectedStreams进行判断。 return (mMuteAffectedStreams & (1 && streamType)) != 0;mMuteAffectedStreams在函数readPersistedSet
andriod2012 阅读(389) |
摘要: status_t AudioFlinger::PlaybackThread::Track::start(){ status_t status = NO_ERROR; LOGV(&start(%d), calling thread %d session %d&, mName, IPCThreadState::self()-&getCallingPid(), mSessionId);// mThread 在 AudioFlinger::ThreadBase::TrackBase 的构造函数中被赋值// 数值由 AudioFlinger::PlaybackThrea...
andriod2012 阅读(304) |
摘要: 在看示例代码 testPlaybackHeadPositionIncrease 的时候,我们对 play 函数进行了研究。不过,当时对 Android 中声音竞争策略相关的内容,并没有详细分析。今天就以 AudioTrack 的播放为引子,来仔细看看 Anroid 中各种声音是以什么样的策略来竞争的。从 Java 侧类 AudioTrack 的 play 函数到函数 AudioFlinger::PlaybackThread::Track::start 之间的调用关系就不再叙述了。在看示例代码 testPlaybackHeadPositionIncrease 的时候已经说明过了。今天就从函数 A
andriod2012 阅读(319) |
摘要: 今天来说说 native 中的代码是如何调用 java 侧代码的。在看 setEnabled 代码的时候,我们了解到,最终在函数 EffectHandle::setEnabled 中会调用 java 侧的函数,将状态改变的事件通知到 java 侧。今天就以 AudioEffect 中的 native 侧调用 java 函数作为例子,来说明 JNI 中的 callback 函数。#######################说明################################/*1、首先,在 JNI 中会有一个 init 函数,java 侧会首先调用该 init 函数来完成初始化
andriod2012 阅读(271) |
摘要: 之前已经看过,通过接口getEnabled可以取得effect的enable状态。今天来看看如何来改变enable状态。*****************************************源码************************************************* //Test case 2.0: test setEnabled() and getEnabled() in valid state @LargeTest public void test2_0SetEnabledGetEnabled() throws Exception {...
andriod2012 阅读(239) |
摘要: 今天来看看如何将AudioEffect与AudioTrack关联起来。*****************************************源码************************************************* //Test case 1.7: test auxiliary effect attachement on AudioTrack @LargeTest public void test1_7AuxiliaryOnAudioTrack() throws Exception { boolean result = f...
andriod2012 阅读(125) |
摘要: 今天来看看AudioEffect中enable相关的接口。*****************************************源码************************************************* //Test case 1.3: test getEnabled() failure when called on released effect @LargeTest public void test1_3GetEnabledAfterRelease() throws Exception { boolean result...
andriod2012 阅读(50) |
摘要: 今天来看看AudioEffect的构造,以及相关的一些函数。*****************************************源码************************************************* //Test case 1.0: test constructor from effect type and get effect ID @LargeTest public void test1_0ConstructorFromType() throws Exception { boolean result = true...
andriod2012 阅读(290) |
摘要: 今天开始看看AudioEffect相关的接口。这个类,之前有看过。不过当时只是从类的定义出发,了解了一下基本的内容。这次从测试代码使用的接口出发,逐步撕开AudioEffect的面纱。*****************************************源码************************************************* //Test case 0.0: test queryEffects() and available effects @LargeTest public void test0_0QueryEffects() th...
andriod2012 阅读(84) |
摘要: 之前我们看过get position,今天来看看set position。*****************************************源码************************************************* //Test case 3: setPlaybackHeadPosition() on paused track @LargeTest public void testSetPlaybackHeadPositionPaused() throws Exception { // constants for te...
andriod2012 阅读(141) |
摘要: 今天来看看playback rate相关的接口。包括set和get。*****************************************源码************************************************* //Test case 6: setPlaybackRate() accepts values twice the output sample rate @LargeTest public void testSetPlaybackRateTwiceOutputSR() throws Exception { // ...
andriod2012 阅读(48) |
摘要: 下面来看看音量设置相关的接口。*****************************************源码************************************************* //Test case 1: setStereoVolume() with max volume returns SUCCESS @LargeTest public void testSetStereoVolumeMax() throws Exception { // constants for test final String TE...
andriod2012 阅读(29) |
摘要: play, stop, flush这几个函数,今天来看看pause函数。*****************************************源码************************************************* //Test case 4: getPlaybackHeadPosition() is & 0 after play(); pause(); @LargeTest public void testPlaybackHeadPositionAfterPause() throws Exception { // co...
andriod2012 阅读(26) |
摘要: 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。一.反编译Apk得到Java源代码首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。具体步骤:首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成
andriod2012 阅读(49) |

我要回帖

更多关于 andriod adb 的文章

 

随机推荐