assetmanager如何将ass文件放入视频中? 安卓的

assetmanager  时间:2021-06-17  阅读:()

用AssetManager能不能通过代码在assets建文件啊?如不能,怎...

看不太明白,但感觉完全不是我想表达的意思。



我的需求是:apk在安装时就会在安装目录建立好一个默认的配置文件myoption.properties,里面存着众多配置,因为是properties文件,可用java提供的Properties类直接读写,而不用像普通txt那样需要自己写代码读写。

而后,程序打开时,都要先检测这个配置文件是否存在,如果发现被用户误删除,则再次生成默认参数的配置。



但现在,貌似这个需求不可能被满足如果eclipse,直接assets上放上默认的配置文件,那么安装后能自动释放此文件。

但问题是,assets目录只读,如果强制被用户删除了配置,那么程序会因为没法写入新的配置文件而彻底成了废物。

但是,如果往data/data/自己程序 写配置文件。

那么没法做到像assets,安装时自己释放原始配置文件。

并且,我在写程序时,也无法看到并编辑这个配置文件(如果放在assets,我在eclipse就能看到assets文件夹,并随意往里面拖放文件,修改文件)但我就不明白,难道前人就都没有遇到这个问题吗??目前市面所有App,完全都做到了,安装时自己释放原始配置文件,而后能修改、重建。



他们怎么做的?

为什么assetmanager取不到apk的资源

我们知道,在一个APK文件中,除了有代码文件之外,还有很多资源文件。

这些资源文件是通过Android资源打包工具aapt(Android Asset Package Tool)打包到APK文件里面的。

在打包之前,大部分文本格式的XML资源文件还会被编译成二进制格式的XML资源文件。

在本文中,我们就详细分析XML资源文件的编译和打包过程,为后面深入了解Android系统的资源管理框架打下坚实的基础。

在前面Android资源管理框架(Asset Manager)简要介绍和学习计划一文中提到,只有那些类型为res/animator、res/anim、res/color、res/drawable(非Bitmap文件,即非.png、.9.png、.jpg、.gif文件)、res/layout、res/menu、res/values和res/xml的资源文件均会从文本格式的XML文件编译成二进制格式的XML文件,如图1所示: 图1 Android应用程序资源的编译和打包过程 这些XML资源文件之所要从文本格式编译成二进制格式,是因为: 1. 二进制格式的XML文件占用空间更小。

这是由于所有XML元素的标签、属性名称、属性值和内容所涉及到的字符串都会被统一收集到一个字符串资源池中去,并且会去重。

有了这个字符串资源池,原来使用字符串的地方就会被替换成一个索引到字符串资源池的整数值,从而可以减少文件的大小。

2. 二进制格式的XML文件解析速度更快。

这是由于二进制格式的XML元素里面不再包含有字符串值,因此就避免了进行字符串解析,从而提高速度。

将XML资源文件从文本格式编译成二进制格式解决了空间占用以及解析效率的问题,但是对于Android资源管理框架来说,这只是完成了其中的一部分工作。

Android资源管理框架的另外一个重要任务就是要根据资源ID来快速找到对应的资源。

在前面Android资源管理框架(Asset Manager)简要介绍和学习计划一文中提到,为了使得一个应用程序能够在运行时同时支持不同的大小和密度的屏幕,以及支持国际化,即支持不同的国家地区和语言,Android应用程序资源的组织方式有18个维度,每一个维度都代表一个配置信息,从而可以使得应用程序能够根据设备的当前配置信息来找到最匹配的资源来展现在UI上,从而提高用户体验。

由于Android应用程序资源的组织方式可以达到18个维度,因此就要求Android资源管理框架能够快速定位最匹配设备当前配置信息的资源来展现在UI上,否则的话,就会影响用户体验。

为了支持Android资源管理框架快速定位最匹配资源,Android资源打包工具aapt在编译和打包资源的过程中,会执行以下两个额外的操作: 1. 赋予每一个非assets资源一个ID值,这些ID值以常量的形式定义在一个R.java文件中。

2. 生成一个resources.arsc文件,用来描述那些具有ID值的资源的配置信息,它的内容就相当于是一个资源索引表。

有了资源ID以及资源索引表之后,Android资源管理框架就可以迅速将根据设备当前配置信息来定位最匹配的资源了。

接下来我们在分析Android应用程序资源的编译和打包过程中,就主要关注XML资源的编译过程、资源ID文件R.java的生成过程以及资源索引表文件resources.arsc的生成过程。

Android资源打包工具在编译应用程序资源之前,会创建一个资源表。

这个资源表使用一个ResourceTable对象来描述,当应用程序资源编译完成之后,它就会包含所有资源的信息。

有了这个资源表之后, Android资源打包工具就可以根据它的内容来生成资源索引表文件resources.arsc了。

接下来,我们就通过ResourceTable类的实现来先大概了解资源表里面都有些什么东西,如图2所示: 图2 ResourceTable的实现 ResourceTable类用来总体描述一个资源表,它的重要成员变量的含义如下所示: --mAssetsPackage:表示当前正在编译的资源的包名称。

--mPackages:表示当前正在编译的资源包,每一个包都用一个Package对象来描述。

例如,一般我们在编译应用程序资源时,都会引用系统预先编译好的资源包,这样当前正在编译的资源包除了目标应用程序资源包之外,就还有预先编译好的系统资源包。

--mOrderedPackages:和mPackages一样,也是表示当前正在编译的资源包,不过它们是以Package ID从小到大的顺序保存在一个Vector里面的,而mPackages是一个以Package Name为Key的DefaultKeyedVector。

--mAssets:表示当前编译的资源目录,它指向的是一个AaptAssets对象。

Package类用来描述一个包,这个包可以是一个被引用的包,即一个预先编译好的包,也可以是一个正在编译的包,它的重要成员变量的含义如下所示: --mName:表示包的名称。

--mTypes:表示包含的资源的类型,每一个类型都用一个Type对象来描述。

资源的类型就是指animimator、anim、color、drawable、layout、menu和values等。

--mOrderedTypes:和mTypes一样,也是表示包含的资源的类型,不过它们是Type ID从小到大的顺序保存在一个Vector里面的,而mTypes是一个以Type Name为Key的DefaultKeyedVector。

Type类用来描述一个资源类型,它的重要成员变量的含义如下所示: --mName:表示资源类型名称。

--mConfigs:表示包含的资源配置项列表,每一个配置项列表都包含了一系列同名的资源,使用一个ConfigList来描述。

例如,假设有main.xml和sub.xml两个layout类型的资源,那么main.xml和sub.xml都分别对应有一个ConfigList。

--mOrderedConfigs:和mConfigs一样,也是表示包含的资源配置项,不过它们是以Entry ID从小到大的顺序保存在一个Vector里面的,而mConfigs是以Entry Name来Key的DefaultKeyedVector。

--mUniqueConfigs:表示包含的不同资源配置信息的个数。

我们可以将mConfigs和mOrderedConfigs看作是按照名称的不同来划分资源项,而将mUniqueConfigs看作是按照配置信息的不同来划分资源项。

ConfigList用来描述一个资源配置项列表,它的重要成员变量的含义如下所示: --mName:表示资源项名称,也称为Entry Name。

--mEntries:表示包含的资源项,每一个资源项都用一个Entry对象来描述,并且以一个对应的ConfigDescription为Key保存在一个DefaultKeyedVector中。

例如,假设有一个名称为icon.png的drawable资源,有三种不同的配置,分别是ldpi、mdpi和hdpi,那么以icon.png为名称的资源就对应有三个项。

Entry类用来描述一个资源项,它的重要成员变量的含义如下所示: --mName:表示资源名称。

--mItem:表示资源数据,用一个Item对象来描述。

Item类用来描述一个资源项数据,它的重要成员变量的含义如下所示: --value:表示资源项的原始值,它是一个字符串。

--parsedValue:表示资源项原始值经过解析后得到的结构化的资源值,使用一个Res_Value对象来描述。

例如,一个整数类型的资源项的原始值为“12345”,经过解析后,就得到一个大小为12345的整数类型的资源项。

ConfigDescription类是从ResTable_config类继承下来的,用来描述一个资源配置信息。

ResTable_config类的成员变量imsi、locale、screenType、input、screenSize、version和screenConfig对应的实际上就是在前面Android资源管理框架(Asset Manager)简要介绍和学习计划一文提到的18个资源维度。

前面提到,当前正在编译的资源目录是使用一个AaptAssets对象来描述的,它的实现如图3所示:

安卓中assets目录有什么作用

在数据传递过程中起到数据存储的作用!!!!!使用的比较多的数据结构有:list(列表),map<key , value>,array(数组),对这些数据结构的基本操作要熟练,例如存取,遍历。

、如果对你有帮助 希望采纳!!!!!!!!!

Monitor Asset Manager好不好

Monitor Asset Manager是一个运行在Windows 32位系统下的即插即用监视器信息实用程序。

它具有多显示器监视功能,而不是简单的直接查询存储在注册表中的相关。

除了提供监视器颜色和时间特性,这个小巧的实用工具(213kb)是它的类型唯一的程序下完成的Windows NT 4.0的详细资料,提供企业与一个简单的跟踪监测序号工具管理人员清单。

  通过Monitor Asset Manager 生成的报告它所重视也提供详细的目标显示设备和有关技术信息系统的基本信息,.这个轻量级的工具企业授权版本可以设置为在后台运行,在那里可以静静地保存各种格式的报告 - 包括SMS兼容的MIF文件格式定期 到指定地点一个IS经理希望执行的SMS兼容的资产管理和库存的做法会发现,监控资产管理是一个完美的工具来赞美现有的管理能力。

  此外,最终用户感到困惑Windows对待他们的显示器和高清晰度显示设备可以洞察到正是拆开的播放方式:所有的显示系统提供的信息是可读的格式,包括DPMS和显示器的支持,色度值,建议的决议和精确时序要求,以及设备的最低要求和最高限额。

最新版本还提取物和解码EIA/CEA-861为高清电视等消费电子设备的扩展数据。

如何将ass文件放入视频中? 安卓的

assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。

assets的读取方式: 1. 先在Activity里面调用getAssets() 来获取AssetManager引用。

2. 再用AssetManager的open(String fileName, int essMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。

3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。

4.调用AssetManager.close() 关闭AssetManager。

需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作

美国Cera 2核4G 20元/45天 香港CN2 E5 20M物理机服务器 150元 日本CN2 E5 20M物理机服务器 150元 提速啦

提速啦 成立于2012年,作为互联网老兵我们一直为用户提供 稳定 高速 高质量的产品。成立至今一直深受用户的喜爱 荣获 “2021年赣州安全大赛第三名” “2020创新企业入围奖” 等殊荣。目前我司在美国拥有4.6万G总内存云服务器资源,香港拥有2.2万G总内存云服务器资源,阿里云香港机房拥有8000G总内存云服务器资源,国内多地区拥有1.6万G总内存云服务器资源,绝非1 2台宿主机的小商家可比。...

iON Cloud:七月活动,洛杉矶CN2 GIA线路85折优惠中,价格偏高/机器稳定/更新优惠码

iON Cloud怎么样?iON Cloud是Krypt旗下的云服务器品牌,成立于2019年,是美国老牌机房(1998~)krypt旗下的VPS云服务器品牌,主打国外VPS云服务器业务,均采用KVM架构,整体性能配置较高,云服务器产品质量靠谱,在线率高,国内直连线路,适合建站等用途,支付宝、微信付款购买。支持Windows server 2012、2016、2019中英文版本以及主流Linux发行...

Sparkedhost($8/月)美国迈阿密AMD Ryzen高性能VPS;免费100G高防

sparkedhost怎么样?sparkedhost主机。Sparkedhost于2017年7月注册在美国康涅狄格州,2018年收购了ClynexHost,2019年8月从Taltum Solutions SL收购了The Beast Hosting,同年10月从Reilly Bauer收购了OptNode Hosting。sparkedhost当前的业务主要为:为游戏“我的世界”提供服务器、虚拟...

assetmanager为你推荐
各大网站有没有很好玩的网站啊listviewitem求解如何获取listview中的itemsdfsdfsdfsdf小米手机投诉热线刷ip流量请问刷流量刷IP有什么用的!qq管家官网在qq电脑管家官网有个可以登录qq的。登录上了可以加速么?za是哪个国家的IE是哪个国家的缩写yui3YUI最详细的资料backupexecBackup Exec 2014怎么备份Exchange微盟价格微盟现在怎么样?pass是什么在英语里pass是什么意思
淘宝虚拟主机 最新代理服务器地址 域名服务器的作用 rackspace 美国仿牌空间 gateone qq数据库 网盘申请 丹弗 架设服务器 如何安装服务器系统 香港亚马逊 智能dns解析 监控服务器 游戏服务器出租 服务器防火墙 空间申请 攻击服务器 脚本大全 cx域名 更多