Android获取本机各种类型文件列表(音乐、视频,作为字节跳动面试官

这篇具有很好参考价值的文章主要介绍了Android获取本机各种类型文件列表(音乐、视频,作为字节跳动面试官。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

获取视频列表

/**

  • 获取本机视频列表
  • @return
    */
    public List getVideos() {

List videos = new ArrayList();

Cursor c = null;
try {
// String[] mediaColumns = { “_id”, “_data”, “_display_name”,
// “_size”, “date_modified”, “duration”, “resolution” };
c = mContentResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Video.Media.DEFAULT_SORT_ORDER);
while (c.moveToNext()) {
String path = c.getString(c.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));// 路径
if (!FileUtils.isExists(path)) {
continue;
}

int id = c.getInt(c.getColumnIndexOrThrow(MediaStore.Video.Media._ID));// 视频的id
String name = c.getString(c.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)); // 视频名称
String resolution = c.getString(c.getColumnIndexOrThrow(MediaStore.Video.Media.RESOLUTION)); //分辨率
long size = c.getLong(c.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));// 大小
long duration = c.getLong(c.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION));// 时长
long date = c.getLong(c.getColumnIndexOrThrow(MediaStore.Video.Media.DATE_MODIFIED));//修改时间

Video video = new Video(id, path, name, resolution, size, date, duration);
videos.add(video);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (c != null) {
c.close();
}
}
return videos;
}

其中,视频的bean类Video代码为:

public class Video {
private int id = 0;
private String path = null;
private String name = null;
private String resolution = null;// 分辨率
private long size = 0;
private long date = 0;
private long duration = 0;

public Video(int id, String path, String name, String resolution, long size, long date, long duration) {
this.id = id;
this.path = path;
this.name = name;
this.resolution = resolution;
this.size = size;
this.date = date;
this.duration = duration;
}

… //此处省略setter和getter方法

通过本地视频id获取视频缩略图

// 获取视频缩略图
public Bitmap getVideoThumbnail(int id) {
Bitmap bitmap = null;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inDither = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
bitmap = MediaStore.Video.Thumbnails.getThumbnail(mContentResolver, id, MediaStore.Images.Thumbnails.MICRO_KIND, options);
return bitmap;
}

上面获取视频列表的方法中,Video对象中有一个属性是id,通过传入这个id可以获取到视频缩略图的Bitmap对象。

获取本机所有图片文件夹

/**

  • 得到图片文件夹集合
    */
    public List getImageFolders() {
    List folders = new ArrayList();
    // 扫描图片
    Cursor c = null;
    try {
    c = mContentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null,
    MediaStore.Images.Media.MIME_TYPE + "= ? or " + MediaStore.Images.Media.MIME_TYPE + “= ?”,
    new String[]{“image/jpeg”, “image/png”}, MediaStore.Images.Media.DATE_MODIFIED);
    List mDirs = new ArrayList();//用于保存已经添加过的文件夹目录
    while (c.moveToNext()) {
    String path = c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA));// 路径
    File parentFile = new File(path).getParentFile();
    if (parentFile == null)
    continue;

String dir = parentFile.getAbsolutePath();
if (mDirs.contains(dir))//如果已经添加过
continue;

mDirs.add(dir);//添加到保存目录的集合中
ImgFolderBean folderBean = new ImgFolderBean();
folderBean.setDir(dir);
folderBean.setFistImgPath(path);
if (parentFile.list() == null)
continue;
int count = parentFile.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
if (filename.endsWith(“.jpeg”) || filename.endsWith(“.jpg”) || filename.endsWith(“.png”)) {
return true;
}
return false;
}
}).length;

folderBean.setCount(count);
folders.add(folderBean);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (c != null) {
c.close();
}
}

return folders;
}

其中,图片文件夹的bean类ImgFolderBean代码为:

public class ImgFolderBean {
/*当前文件夹的路径/
private String dir;
/*第一张图片的路径,用于做文件夹的封面图片/
private String fistImgPath;
/*文件夹名/
private String name;
/*文件夹中图片的数量/
private int count;

public ImgFolderBean(String dir, String fistImgPath, String name, int count) {
this.dir = dir;
this.fistImgPath = fistImgPath;
this.name = name;
this.count = count;
}

… //此处省略setter和getter方法
}

获取图片文件夹下的图片路径的集合

/**

  • 通过图片文件夹的路径获取该目录下的图片
    */
    public List getImgListByDir(String dir) {
    ArrayList imgPaths = new ArrayList<>();
    File directory = new File(dir);
    if (directory == null || !directory.exists()) {
    return imgPaths;
    }
    File[] files = directory.listFiles();
    for (File file : files) {
    String path = file.getAbsolutePath();
    if (FileUtils.isPicFile(path)) {
    imgPaths.add(path);
    }
    }
    return imgPaths;
    }

获取本机已安装应用列表

/**

  • 获取已安装apk的列表
    */
    public List getAppInfos() {

ArrayList appInfos = new ArrayList();
//获取到包的管理者
PackageManager packageManager = mContext.getPackageManager();
//获得所有的安装包
List installedPackages = packageManager.getInstalledPackages(0);

//遍历每个安装包,获取对应的信息
for (PackageInfo packageInfo : installedPackages) {

AppInfo appInfo = new AppInfo();

appInfo.setApplicationInfo(packageInfo.applicationInfo);
appInfo.setVersionCode(packageInfo.versionCode);

//得到icon
Drawable drawable = packageInfo.applicationInfo.loadIcon(packageManager);
appInfo.setIcon(drawable);

//得到程序的名字
String apkName = packageInfo.applicationInfo.loadLabel(packageManager).toString();
appInfo.setApkName(apkName);

//得到程序的包名
String packageName = packageInfo.packageName;
appInfo.setApkPackageName(packageName);

//得到程序的资源文件夹
String sourceDir = packageInfo.applicationInfo.sourceDir;
File file = new File(sourceDir);
//得到apk的大小
long size = file.length();
appInfo.setApkSize(size);

System.out.println(“---------------------------”);
System.out.println(“程序的名字:” + apkName);
System.out.println(“程序的包名:” + packageName);
System.out.println(“程序的大小:” + size);

//获取到安装应用程序的标记
int flags = packageInfo.applicationInfo.flags;

if ((flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
//表示系统app
appInfo.setIsUserApp(false);
} else {
//表示用户app
appInfo.setIsUserApp(true);
}

if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
//表示在sd卡
appInfo.setIsRom(false);
} else {
//表示内存
appInfo.setIsRom(true);
}

appInfos.add(appInfo);
}
return appInfos;
}

其中,安装包信息的bean类AppInfo代码为:

public class AppInfo {
private ApplicationInfo applicationInfo;
private int versionCode = 0;
/**

  • 图片的icon
    */
    private Drawable icon;

/**

  • 程序的名字
    */
    private String apkName;

/**

  • 程序大小
    */
    private long apkSize;

/**

  • 表示到底是用户app还是系统app
  • 如果表示为true 就是用户app
  • 如果是false表示系统app
    */
    private boolean isUserApp;

/**

  • 放置的位置
    */
    private boolean isRom;

/**

  • 包名
    */
    private String apkPackageName;

… //此处省略setter和getter方法

获取文档、压缩包、apk安装包等

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
安卓如何获取music同级别文件夹文件,2024年程序员学习,android,音视频
安卓如何获取music同级别文件夹文件,2024年程序员学习,android,音视频
安卓如何获取music同级别文件夹文件,2024年程序员学习,android,音视频
安卓如何获取music同级别文件夹文件,2024年程序员学习,android,音视频

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
安卓如何获取music同级别文件夹文件,2024年程序员学习,android,音视频

最后

总而言之,成功是留给准备好的人的。无论是参加什么面试,都要做好充足的准备,注意好面试的礼仪和穿着,向面试官表现出自己的热忱与真诚就好。即使最后没有过关,也要做好经验的总结,为下一次面试做好充足准备。

这里我为大家准备了一些我在面试后整理的面试专题资料,除了面试题,还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料,免费分享给大家,希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

毕竟不管遇到什么样的面试官,去面试首先最主要的就是自己的实力,只要实力够硬,技术够强,就不怕面试拿不到offer!

想要面试顺通嘛,赶紧领取下面的面试资料为之后的面试做足准备叭!这里提前祝各位面试成功!

资料领取方式:  Android架构设计

安卓如何获取music同级别文件夹文件,2024年程序员学习,android,音视频

安卓如何获取music同级别文件夹文件,2024年程序员学习,android,音视频

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

先最主要的就是自己的实力,只要实力够硬,技术够强,就不怕面试拿不到offer!

想要面试顺通嘛,赶紧领取下面的面试资料为之后的面试做足准备叭!这里提前祝各位面试成功!

资料领取方式:  Android架构设计

[外链图片转存中…(img-sNRE6syB-1711171591646)]

[外链图片转存中…(img-eXje5M5q-1711171591646)]

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

安卓如何获取music同级别文件夹文件,2024年程序员学习,android,音视频文章来源地址https://www.toymoban.com/news/detail-848884.html

到了这里,关于Android获取本机各种类型文件列表(音乐、视频,作为字节跳动面试官的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp - App 平台下获取用户本机已安装的应用列表app,可读取某个应用的全部信息(应用名称 / 图标 / 是否系统软件 / 安装包 / 签名等软件信息)超详细注释示例源代码教程

    如题所示,本文提供 uniapp 编译为 APP 平台下,如何获取用户手机内的所有应用(并且拿到应用名字/图标等信息), 你可以直接复制本文提供的方法,稍微改改就能移植到你自己的项目中去。 代码干净整洁,注释详细。 Android的应用管理主要是通过PackageManagerService来完成的。

    2024年02月11日
    浏览(35)
  • nodejs接口联动获取req的各种类型数据,搭建可视化流程引擎平台

    考虑跨域等性能,简易的工程化,采用express框架 接下来我们就来安装 body-parser express的中间件 body-parser 解析客户端请求的body中的内容,JSON编码处理和url编码处理 文件上传看我之前的博客内容 http://localhost:8080/?age=1 http://localhost:8080/12/url 当然也可以进行组合发送 链接数据库

    2024年02月11日
    浏览(29)
  • Android中获取手机SIM卡的各种信息

     通过以下工具类方法可以获取到手机SIM的各种信息数据!!!

    2024年02月10日
    浏览(26)
  • uniapp实战仿写网易云音乐(三)—视频页面(scroll-view组件实现横线滑动,mescroll-uni实现视频列表,向下滑动刷新当前页面)

    接着上篇文章继续完成剩下的部分,本篇文章是完成第二个页面——视频页面的部分,视频还是没有做播放的效果,主要是做展示效果。下面附上两篇文章链接,没看过的同学可以回头看看: uniapp实战仿写网易云音乐(一)—底部工具栏以及首页轮播图swiper的实现 uniapp实战仿写

    2023年04月25日
    浏览(32)
  • C++完成目录下文件夹和各种类型文件的超时删除

    最近的一个项目遇到了要删除过时的一些自己这边生成的文件 思路就是先找到文件(包括文件夹),然后判断他们的时间来确定是否删除文件(文件夹)。 1.CFileFind 类 执行本地文件搜索,并且是执行 Internet 文件搜索的 CGopherFileFind 和 CFtpFileFind 的基类。 语法: 能使用到的公

    2024年02月07日
    浏览(31)
  • Android 获取手机已安装的应用列表(适配)

    加上权限才能获取到所有的应用 低版本的手机 可以用else里边的方法 也可以用 Intent的action 是:Intent.ACTION_MAIN 这个不要传错。 水平有限,如有问题欢迎评论区留言指正。 如果在高版本上有问题的话建议将 targetSdkVersion设置成26试试。 关注我获取更多知识或者投稿

    2024年02月13日
    浏览(29)
  • Android点选下拉列表框选项,获取选项内容

    的作者做的一个项目,通过app来监测设备是否在线状态,这时就需要实现分别查询“在线”、“离线”、“全部”三种选项的设备情况。也就是要能实现根据在线与否的状态来对设备进行筛选。 要对数据表中数据进行筛选,经常用到下拉列表框来设定选项,当点选不同选项时

    2023年04月08日
    浏览(28)
  • Android12 获取音频输出列表&设置音频输出通道

    有个需求是APP端能够获取所有音频输出列表,研究了很长时间源码,发现只有这个API合适。 这个API能够获取到设备上所有可用的输出,且APP可以调用。 需要在framework层修改,找一个Manager或者自己写一个Manager,添加以下API方法。

    2024年02月16日
    浏览(34)
  • Android 12 Wifi 开发(获取列表、连接、断开连接)

    获取Wifi列表: 扫描(这个方法早在Android 9.0 就被弃用), 不过如果不调用的话是没法及时获取Wifi列表的广播的。 (不需要也能正常获取,没有延迟,经实验毫无区别) 创建广播并接收: 配置并连接( 无系统签名 ): 配置并连接( 有系统签名 ): 断开连接(无系统签名

    2024年02月03日
    浏览(24)
  • Flutter Android & IOS 获取通讯录联系人列表

    1.在 pubspec.yaml 文件中添加 contacts_service 和 permission_handler 插件的依赖: 2.在你的 Dart 代码中,导入 contacts_service 插件: 3.权限请求: Android 需要在 android/app/src/main/AndroidManifest.xml 文件中添加以下内容: IOS 需要在 ios/Runner/Info.plist 文件中添加以下内容: 在ios系统上如果进行

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包