android
flycatdeng
这个作者很懒,什么都没留下…
展开
-
记一次Android cpp文件编译的so文件总是找不到:dlopen failed:library “***.so” not found
近期修改一个1年前的Android项目,其内有c++文件在一个module中,之前都是直接可以编译成so文件到aar包中。放在项目中也能直接运行。但是今天重新编译却总是报错:java.lang.UnsatisfiedLinkError: dlopen failed: library "***.so" not found.代码没有更改过,只是AS环境有升级。将代码放到原始的旧项目中发现可以正常执行。对比之后发现是gradle版本信息问题。新版本(异常)build.grad...原创 2021-01-18 16:49:42 · 4884 阅读 · 0 评论 -
Android生成文件失败:java.lang.IllegalStateException:Failed to build unique file: /storage/emulated/0/...
1.问题说明Android Q上,生成同一个名称的文件(类型+年月日),一开始好好的,突然有一天就报错了:java.lang.IllegalStateException:Failed to build unique file: /storage/emulated/0/...2.问题追踪因为同一名称的文件会被系统在默认添加(1...)等数字用以标识,例如我有一个aa.txt文件,当我要再次生成aa.txt时,系统会帮我生成aa (1).txt文件,再生成则是aa (2).txt。单从代码和原创 2020-06-16 23:00:23 · 4306 阅读 · 4 评论 -
记一次Android Q使用MediaStore删除文件失败的过程
问题描述:在Android Q上使用MediaStore创建了一个音频文件test1.mp3保存到sdcard/Music/flycat目录下(保存过程省略...)。然后用MediaStore去查询该音频文件的Uri,记为uri1。最后删除:context.getContentResolver.delete(uri1,null,null),此时删除成功。假设我同上步骤创建了test1.mp...原创 2020-04-18 16:42:15 · 2038 阅读 · 1 评论 -
Android Kotlin: RuntimeException: Unable to instantiate activity ComponentInfo{...}
今天想尝试一下kotlin写个Android Demo, 结果运行总是直接crash,报以下错:java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.***.demo/com.***.demo.android.**Activity}: java.lang.ClassNotFoundExcepti...原创 2020-04-05 00:02:52 · 963 阅读 · 2 评论 -
Android Canvas : 2 基础绘制
目录2.1 基础图元绘制2.2 Paint设置2.3Bitmap2.4旋转/平移/缩放/斜切2.4.1 旋转(rotate)2.4.2 平移(translate)2.4.3 缩放(scale)2.4.4 斜切(skew)2.1 基础图元绘制由Canvas的draw相关的API可以看到其可以绘制一些基础图元如点、线、圆、矩形、圆角矩形、弧形、文字、Bitm...原创 2020-06-15 00:45:56 · 457 阅读 · 0 评论 -
Android Canvas : 1 基础介绍
目录1.1 是什么?1.2 与Surface的区别与联系1.3 底层实现1.3.2 追踪证明参考1.1 是什么?Android中Canvas类常用于自定义View等操作中,canvas则如同一张画布可以在上面绘制内容,然后这张画布也可以叠加其他的图层或者平移旋转等操作。Canvas对象的获取方式有两种:一种我们通过重写View.onDraw方法,View中的Canv...原创 2019-11-23 17:42:24 · 877 阅读 · 0 评论 -
adb git 常用命令
还是像eclipse快捷键一样,遇到一个加一个一、Linux 1、进入下一目录:cd eg: cd work 进入work文件夹 2、遍历该目录下的文件:直接使用ls2.1、ls -a 遍历该目录下的所有文件,包括隐藏的文件和文件夹 like.. .. dandy2.2、列出详细信息 ls -al 总用量...原创 2014-06-05 20:47:52 · 410 阅读 · 0 评论 -
gles小注意
8.尽量使用VBO。glVertexAttribPointer***传输的数据不是VBO指针的话,那传输的数据越多,耗时越多;除了耗时,这个函数每次调用还会把CPU的数据拷贝一份到GPU,消耗带宽,使用VBO的话可以直接将这份数据cache到GPU,下次就不用再次拷贝了,从而节约了带宽,也就节省了用电。 7.glClear(...)也是会耗时2ms~9ms左右的。所以在效果不影响的...原创 2017-04-21 15:53:42 · 944 阅读 · 1 评论 -
复制文件/文件夹,删除文件/文件夹
复制文件夹:public static boolean copyFolder(String srcFolderFullPath, String destFolderFullPath) { try { (new File(destFolderFullPath)).mkdirs(); // 如果文件夹不存在 则建立新文件夹 File...原创 2014-10-20 12:33:49 · 116 阅读 · 0 评论 -
从assets目录复制文件夹和文件,(不只是文件,附demo)
2014-11-15 18:24:51 · 308 阅读 · 0 评论 -
SharedPreferences跨应用跨进程获取数据(附件)
在做一个应用的时候,该应用本来是和桌面放在一起的,后来不得不分开,但是桌面部分需要获取该应用的数据,就是该应用切换数据,然后发送广播给桌面程序,桌面程序获取该应用的数据!需要的数据不多,所以之前该应用融合在桌面的时候就是使用的SharePreferences保存,但是现在分开了,就要跨进程了,要么就用ContentProvider结合SQLite将数据暴漏给桌面程序(但是需要的数据很简单,所以...原创 2014-12-13 16:17:08 · 350 阅读 · 0 评论 -
点击打开进入应用的动画(点击非Android View)
android点击一个View进入一个应用,通常会有好几种动画,可以通过xml控制,也可以通过其内部提供的ActivityOptions类来控制。那么最近我们的载体(一个桌面)需要使用ActivityOptions.makeScaleUpAnimation的动画方式来进入一个应用,如果我们点击的是一个View v,那么正常的程序可以是酱紫:Intent intent = 。。。int[] ...原创 2015-05-16 17:06:20 · 467 阅读 · 0 评论 -
android获取编译之后的点9图片
今天要给桌面做一个功能,给一个View加个背景,该背景图为点9图片,但是图片的位置不在我们的apk。 于是我先写接口,将图片放到res/drawable的目录下,无论是使用View.setBackgroundResource(resID)还是使用View.setBackgroundDrawable(drawable)都可以显示正常,于是我信心满满的就以为大功告成了...原创 2015-09-07 17:22:45 · 277 阅读 · 0 评论 -
android由应用包名得到该应用的默认启动类
/** * get the launcher activity class full name of an application by the package name * * @param context * the context of current application * @param package...原创 2015-09-08 21:06:13 · 401 阅读 · 0 评论 -
获取IMEI号耗时10秒导致黑屏的解决
描述:一个应用,首次安装应用黑屏5秒左右后才开始显示正常界面。在做桌面应用的时候,由于桌面一直被用所以也没怎么发现,而且该问题是只有每次卸载(或者之前没有该应用)之后再次安装首次启动才会出现黑屏。后来经过打印时间才定位到是因为初始化的时候获取IMEI耗时了10s多(在界面设置要显示的View之前).获取IMEI(设备ID):Requires Permission:READ_PHONE_STA...原创 2015-12-16 23:24:28 · 224 阅读 · 0 评论 -
几种获取应用程序/apk安装包版本信息的方法
获取到PackageInfo之后,那么包名,版本号什么的都可以得到咯一、应用程序得到自己的版本信息 /** * 得到当前应用版本名称的方法 * * @param context * :上下文 * @throws Exception */ public static String getVer...原创 2015-12-19 15:17:51 · 788 阅读 · 0 评论 -
ListView设置分割线的长度
android中ListView默认的分割线是填充满整个listview的宽度的,然后设计师需要的偏偏就是不填充满的状态,找了相关资料,写了个demo验证下。当然最简单的实现方式就是用图片了,但是图片就要涉及到分辨率,那用颜色填充会比较直接。在drawable中定义我需要的分割线main_list_divider_line.xml<?xml version="1.0" en...原创 2016-01-25 20:53:23 · 210 阅读 · 0 评论 -
自定义RatingBar的显示(评分组件)
做项目中有要用到评分控件,本以为可以直接使用,加上该控件后发现和设计师的不一样,尤其是肤色不同,于是需要自定义一下RatingBar的显示,写个demo记录一下:如图,android默认的ratingbar是蓝色评分灰色底的。RatingBar特有的属性: android:numStars 指定该组件星星的数量,例如上图可以定义5个6个甚至更多...原创 2016-01-27 18:15:25 · 134 阅读 · 0 评论 -
TextureView展示OpenGL内容(Demo)
上图的实现,如果是用GLSurfaceView实现,那会相对比较简单,直接在设置的Renderer实现类中实现gl展示即可,但是使用TextureView就没那么方便了,一般TextureView与OpenGL和结合就是相机预览和视频播放了,那如果是一般的gles展示呢? 这就需要重新创建一个GL线程了(相比之下,这种方式是真真不好的,通过实践发现:这种实现方式CPU占用率...原创 2017-02-27 14:43:16 · 907 阅读 · 0 评论 -
dx工具(android将jar包转成dex格式二进制jar包工具)
好吧,不得不承认这个工具真心难找,也不知道自己sdk里以前怎么就有了,还好给了师傅一份,现在重装系统从网上找这个工具都找不到。将platform-tools.zip解压,将其内部资源拷贝到android sdk platform-tools目录下即可使用(window环境)。编译命令,cmd进入到android sdk platform-tools目录 dx --dex --output=...原创 2014-10-08 10:21:02 · 753 阅读 · 0 评论 -
android获取系统铃声并播放
private void startAlarm() throws IllegalStateException, IOException { mMediaPlayer = MediaPlayer.create(this, getSystemDefultRingtoneUri()); mMediaPlayer.setLooping(true);//设置循环 ...原创 2014-09-24 15:33:29 · 458 阅读 · 0 评论 -
在自己应用中判断刚刚去往动态壁纸预览页面的壁纸是否设置成功
本来从动态壁纸预览页面设置一个动态壁纸回到桌面便可以看到桌面动态壁纸,可以观察得到自己的动态壁纸是否设置成功了(必须知道设置是否成功的结构,因为还有一些操作需要完成)!但是现在是要在自己的应用中进入到动态壁纸预览页面(去往某个动态壁纸的预览页面,那里可以设置壁纸)点击“设置壁纸”之后回到自己的应用是看不到桌面的,而且又不想直接退出自己的应用!此时该怎么得到想要的结果呢?在LiveWallp...原创 2018-11-08 20:44:44 · 1504 阅读 · 0 评论 -
去往某个动态壁纸的预览页面,那里可以设置壁纸(4.12及其以上版本)
/** * 去往某个动态壁纸的预览页面,那里可以设置壁纸 * * @param context * @param packageName * 动态壁纸的包名 * @param classFullName * 动态壁纸service类的类全名 */ @Suppres...原创 2018-11-08 20:41:35 · 1124 阅读 · 0 评论 -
判断一个动态壁纸是否已经在运行
/** * 判断一个动态壁纸是否已经在运行 * @param context:上下文 * @param tagetPackageName:要判断的动态壁纸的包名 * @return */ public static boolean isLiveWallpaperRunning(Context context, St...原创 2018-11-08 20:38:50 · 994 阅读 · 0 评论 -
android动态壁纸1——初步框架(有背景,能使用,仿可爱宝贝)
可爱宝贝下载链接一、简介: 正如别人所说的一样:动态壁纸是一个Android应用程序,包括一个服务(WallpaperService)。该服务必须包括一个引擎(WallpaperService.Engine)。该引擎是连接用户、桌面、系统之间的桥梁。它也可以绘制桌面壁纸。动态壁纸是一个apk应用,但是不同的是这个在我们实现的时候可以不用activity二、权限与声明:...原创 2018-11-08 20:35:21 · 1681 阅读 · 0 评论 -
error: cannot find -lGLESv3 解决
问题描述:Android OpenGL Native 开发,从环境ES2.0切换到ES3.0会发现,总是编译不了,总是报错“error: cannot find -lGLESv3”。从字面上看好像是少了libGLESv3.so文件,但是在sdk\ndk-bundle\platforms\android-27\arch-arm\usr\lib目录下却看到好端端的躺在那里。问题解决:查...原创 2018-10-15 15:20:28 · 3183 阅读 · 1 评论 -
Android GLSurfaceView设置透明背景
/** * <pre> * 设置透明背景的方法,根据实际情况,可能setEGLConfigChooser中的alpha可能要设置成0 * 再者就是这个方法需要在setRenderer之前调用才有效 * </pre> */ public void setTranslucent() { //...原创 2018-09-12 20:52:15 · 4825 阅读 · 0 评论 -
Android进入系统时间设置页面
最近做的一个功能是点击一个按钮进入系统的时间设置页面,可是我想啊,那个页面肯定是个activity,而不同的系统有着不同的页面,或者说activity的类名可能不一样,那我进入时岂不是要做很多判断?刚刚查了资料发现方法如下:mContext.startActivity(new Intent(Settings.ACTION_DATE_SETTINGS));启动的是一个action,那么系统会原创 2014-02-25 11:46:17 · 3074 阅读 · 0 评论 -
Android原生代码setting中的widget屏幕亮度权限DEVICE_POWER报错解决
之前做Android原生代码setting中的widget,屏幕亮度权限DEVICE_POWER总是报错,提示为power.setTemporaryScreenBrightnessSettingOverride(brightness);一行需要该权限。查了好多的资料,问了好多的人,都说要在manifest.xml文件中添加相应的权限,并且要将其push到system/app目录下,还要添加相应的数原创 2014-01-15 16:19:32 · 2869 阅读 · 1 评论 -
Android手势操作onScroll没有执行(以及onFling问题)
现象:将某一手势操作交给GestureDetector时,GestureDetector重写了几个方法,但是onScroll没有执行,其他的onDOwn,OnLongPress都有执行。解决:onDOwn方法的返回值返回true原创 2014-01-14 17:03:28 · 3175 阅读 · 2 评论 -
android单元测试Test run failed: Unable to find instrumentation target package: com.abc.wallpaper.test
在做android单元测试时,一运行就出错,后来经过察看资料得知: android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.abc.wallpaper.teacharm" />中的android:targetPackage需要与原创 2014-01-13 16:54:28 · 1398 阅读 · 0 评论 -
android.permission.WRITE_SECURE_SETTINGS权限报错
在做Android的GPS这一块时,根据原生代码写的Widget,运行时总是会报错说需要android.permission.WRITE_SECURE_SETTINGS权限,于是便在Manifest.xml中添加该权限,但是保存时会报错提示该权限仅用于系统的app查看了很多资料都说需要将自写的apk文件push到system app目录下,可是项目已经报错根本就不能运行啊!!!也不知道这是...原创 2014-01-07 18:14:51 · 42541 阅读 · 3 评论 -
android获取屏幕分辨率(万能)
此方法比较万能,无需考虑上下文,网上看到有些人提供的方法都只能在Activity中使用,而在service或其他的环境中就不实用了,感觉自己的这个方法都适用,可以提取出来以便公共调用:/** * 得到屏幕的宽和高 */private void getWH() {WindowManager mageger=(WindowManager)getSystemService(Context.WINDOW_原创 2013-11-28 14:54:10 · 1330 阅读 · 0 评论 -
android 创建客户端总是没反应的难题(原来是未加权限)
从安卓系统作为客户端连接到电脑PC服务器端,就是创建不成功1、使用client=new Socket("localhost",8090);创建没反应;本人猜想是这个"localhost"不再是与电脑默认的ip有关,我在上面用到的是Socket(Stringhost, intport)(创建一个流套接字并将其连接到指定主机上的指定端口号。)所以,想要创建成功还是要得到电脑服务器端...原创 2012-02-09 20:40:20 · 164 阅读 · 0 评论 -
android002,简易PC-Android发送对话
一、思路:1、首先需要一个服务器,一个客户端:PC作为服务器,手机Android作为客户端2、服务器:接收流后将流输出并加上标识后再以流输出发送给客户端3、客户端:将编辑框输入的字符串以字节流输出给服务器,再接收服务器的流并显示到另一个编辑框内!4、大体思路如此!其他细节: A:虽然setText()中括号里是int型数据,但任然可以在里面写字符串,因为E...原创 2012-02-14 02:38:07 · 148 阅读 · 0 评论 -
android004,简易PC-Android图片发送
一、思路:通过PC服务器向Android手机客户机发送图片1、创建java工程PC服务器1)、创建服务器对象,带有指定端口2)、让服务器循环等待客户机的连接3)、点击按钮出现文件选择器,得到文件路径4)、取得连结对象上的流对象,再将流传送给客户机5)、创建一个界面,点击按钮,选择图片,取得图片的信息,发送给客户机2、Android工程手机客户端1)、创建好工程...原创 2012-02-14 19:19:42 · 177 阅读 · 0 评论 -
亮屏解锁
/** * 解锁屏 * @param context */ public static void unLockScreen(Context context) { KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);...原创 2014-09-24 15:28:08 · 139 阅读 · 0 评论 -
android动态加载class文件(DexClassLoader可从SD卡加载)(android插件开发)
一、思路 1、这段时间因为要做一个自定义的3Dwidget,这个widget是一个时钟,想实现的功能是可以给该widget更换皮肤(View)和交互,皮肤都是又图片和字符串组成的,但是又要考虑可能用户会选择不同的皮肤(皮肤中的某些元素不需要,又或者多添加一些元素),开始想吧,可以将所有的对象都先实例化,然后再在SD卡的配置文件中读取哪些是需要的元素,但是这样太有局限性了,一个是内...原创 2014-08-05 21:22:50 · 411 阅读 · 0 评论 -
LibGDX制作android动态壁纸
一、还是像普通的android动态壁纸一样,创建一个没有activity的安卓工程TestLibGDXWallpaper二、AndroidManifest.xml配置 <application android:icon="@drawable/icon" android:label="@string/app_name" > ...原创 2014-06-27 11:38:54 · 469 阅读 · 0 评论 -
android动态壁纸1——初步框架(有背景,能使用,仿可爱宝贝)
可爱宝贝下载链接一、简介: 正如别人所说的一样:动态壁纸是一个Android应用程序,包括一个服务(WallpaperService)。该服务必须包括一个引擎(WallpaperService.Engine)。该引擎是连接用户、桌面、系统之间的桥梁。它也可以绘制桌面壁纸。动态壁纸是一个apk应用,但是不同的是这个在我们实现的时候可以不用activity二、权限与声明:...原创 2013-10-30 18:52:47 · 231 阅读 · 0 评论