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 中的文件只可以读取而不能进行写的操作

Gcore(75折)迈阿密E5-2623v4 CPU独立服务器

部落分享过多次G-core(gcorelabs)的产品及评测信息,以VPS主机为主,距离上一次分享商家的独立服务器还在2年多前,本月初商家针对迈阿密机房限定E5-2623v4 CPU的独立服务器推出75折优惠码,活动将在9月30日到期,这里再分享下。G-core(gcorelabs)是一家总部位于卢森堡的国外主机商,主要提供基于KVM架构的VPS主机和独立服务器租用等,数据中心包括俄罗斯、美国、日...

GreenCloudVPS($30/年),500G大硬盘VPS,10Gbps带宽

GreenCloudVPS最近在新加坡DC2节点上了新机器,Dual Xeon Silver 4216 CPU,DDR4内存,10Gbps网络端口,推出了几款大硬盘VPS套餐,基于KVM架构,500GB磁盘起年付30美元。除了大硬盘套餐外,还加推了几款采用NVMe硬盘的常规套餐,最低年付20美元。不过需要提醒的是,机房非直连中国,尤其是电信用户ping值感人,包括新加坡DC1也是如此。大硬盘VPS...

VinaHost,越南vps,国内延时100MS;不限流量100Mbps

vinahost怎么样?vinahost是一家越南的主机商家,至今已经成13年了,企业运营,老牌商家,销售VPS、虚拟主机、域名、邮箱、独立服务器等,机房全部在越南,有Viettle和VNPT两个机房,其中VNPT机房中三网直连国内的机房,他家的产品优势就是100Mbps不限流量。目前,VinaHost商家发布了新的优惠,购买虚拟主机、邮箱、云服务器、VPS超过三个月都有赠送相应的时长,最高送半年...

assetmanager为你推荐
旺旺群发手机旺旺怎么群发信息?windowsmediawindows media player打开怎么设置createfile失败惠普机看机提示create file fail 无法进桌面网络视频下载器网络视频下载工具哪个好用?excel大写金额EXCEL金额大写手机软件开发工具怎样开发手机软件netbios协议NetBIOS协议起什么作用?comexception5种常见的Exception!音乐代码在html中插入mp3音频的代码是什么java程序员招聘java程序员学出来工作好不好找,工资咋样?
什么是虚拟主机 私服服务器租用 highfrequency 息壤主机 外贸主机 cpanel 免费个人博客 华为4核 骨干网络 免费全能主机 稳定免费空间 最好的qq空间 能外链的相册 域名dns ledlamp 中国联通宽带测速 国外免费云空间 阿里云邮箱个人版 睿云 so域名 更多