天道酬勤,学无止境

Android-为什么我保存的图像没有出现在手机的默认图片库中?(Android - Why my saved image is not appearing in the default gallery of my phone?)

问题

我正在尝试将应用程序中的图像保存到手机的默认图片库中。 如果我的手机上装有SD卡,则下面的代码可以完美地工作。 所保存的图像将出现在手机的图库中,并且与预期的一样:

private Uri saveMediaEntry(File f, String title, String description, int orientation,      Location loc) {

    ContentValues v = new ContentValues();
    v.put(Images.Media.TITLE, title);
    v.put(Images.Media.DISPLAY_NAME, title);
    v.put(Images.Media.DESCRIPTION, description);

    v.put(Images.Media.ORIENTATION, orientation);

    String nameFile = f.getName();
    File parent = f.getParentFile() ;
    String path = parent.toString().toLowerCase() ;
    String nameParent = parent.getName().toLowerCase() ;
    v.put(Images.ImageColumns.BUCKET_ID, path.hashCode());
    v.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, nameParent);
    v.put(Images.Media.SIZE,f.length()) ;

    if( nameFile.toLowerCase().contains(".png") ){
        v.put(Images.Media.MIME_TYPE, "image/png");

    }else if( nameFile.toLowerCase().contains(".jpg") || 
              nameFile.toLowerCase().contains(".jpeg") ){
         v.put(Images.Media.MIME_TYPE, "image/jpeg");

    }else{
        v.put(Images.Media.MIME_TYPE, "image/jpeg");
    }

    String imagePath = f.getAbsolutePath();
    v.put("_data", imagePath) ;
    ContentResolver c = getContentResolver() ;

    Uri uriOfSucessfulySavedImage = null;
    uriOfSucessfulySavedImage = c.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, v);

    return uriOfSucessfulySavedImage;
  }

但是,如果我尝试将同一张图片保存到内部存储器中(当手机没有SD卡时),则该图片不会出现在手机的图库中! 为了做到这一点,我只更改了上面的代码中的一行:

uriOfSucessfulySavedImage = c.insert(MediaStore.Images.Media.INTERNAL_CONTENT_URI, v);

但是,有趣的是,变量uriOfSucessfulySavedImage不为null(它返回content://media/internal/images/media/x ,其中“ x”是一个数字)。 因此,图像被保存在电话的内部存储中的某个位置,但是没有像我使用MediaStore.Images.Media.EXTERNAL_CONTENT_URI时那样显示在电话库中。

有人知道发生了什么吗? 如何将图像保存到手机的内部存储器中并将该图像保存在手机的图库中

更新

我忘记了一个重要信息。 方法“ saveMediaEntry”的参数中的文件“ f”来自安装SD卡时(即,对于第一个代码)的另一种方法:

public static File getCacheDirectory(String desiredNameOfTheDirectory){

File fileCacheDir = null;

    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ){

        fileCacheDir = new File( Environment.getExternalStorageDirectory(), desiredNameOfTheDirectory );
   }


    if(!fileCacheDir.exists()){
        fileCacheDir.mkdirs();
    }

    return fileCacheDir;
}

并从以下代码中了解何时创建SD卡:

public static File getCacheDirectory(String desiredNameOfTheDirectory, Context   context){

    File fileCacheDir = null;

        fileCacheDir = context.getCacheDir();

    if(!fileCacheDir.exists()){
        fileCacheDir.mkdirs();
    }

    return fileCacheDir;
}
回答1

我没有尝试过,但是我相信您需要运行媒体扫描仪来扫描内部存储目录,以便图库可以看到您新保存的图像。 在这里查看此帖子。

回答2

另一种简单的方法。 保存文件后添加。

File imageFile = ...
MediaScannerConnection.scanFile(this, new String[] { imageFile.getPath() }, new String[] { "image/jpeg" }, null);
回答3

在活动中复制过去此功能

private void scanner(String path) {

        MediaScannerConnection.scanFile(FrameActivity.this,
                new String[] { path }, null,
                new MediaScannerConnection.OnScanCompletedListener() {

                    public void onScanCompleted(String path, Uri uri) {
                        Log.i("TAG", "Finished scanning " + path);
                    }
                });
    }

然后在保存图像的位置添加此行

scanner(imageFile.getAbsolutePath());
回答4

试试这个。

一旦图像存储在图库中,请写下该行。

File file = ..... // Save file

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
回答5
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

                sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                        Uri.parse("file://"
                                + Environment.getExternalStorageDirectory())));
            } else {
                sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                        Uri.parse("file://"
                                + Environment.getExternalStorageDirectory())));
            }

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 移动应用的图像尺寸最佳做法(Image Size Best Practices for Mobile Application)
    问题 我正在构建一个针对iPhone / iPad和Android手机的移动应用程序。 该应用程序将涉及用户拍照并上传到我的服务器,然后用户将能够在其移动设备上查看这些照片(尽管不一定是自己的照片,因此Android用户可能正在查看使用iPhone拍摄的照片) )。 我应该保存哪种尺寸的照片以涵盖大多数使用情况? iPad为1.333 W / H,大多数手机为1.5或1.333 W / H,而罕有的1.666 W / H。 具体来说: iPad:1024x768,iPad3:2048x1536,iPhone和其他一些手机:960x640、480x320、800x480。 为了使其易于管理,我需要确定一些特定的图像尺寸并将照片保存为这些尺寸。 我并不是真的在技术方面寻求帮助。 我可以在服务器端进行图像缩放等。我在寻求有关图像大小的建议/最佳实践/经验教训之前,不做过多的构建。 我应该将照片保存为哪种尺寸以涵盖大多数用例? 您是否建议在客户端上进行任何缩放,然后再上载到服务器以节省传输时间(例如缩小2048x1536 iPad照片),还是我应该始终传输原件? 我应该如何处理不兼容的图像尺寸(例如,在Android设备上显示用iPad拍摄的照片)? 我应该在发送给客户端之前在服务器上预先剪切这些图像,还是应该让客户端电话处理图像调整大小? 还有UI的问题。 除了照片外
  • 如何访问/ storage / emulated / 0 /(How to access /storage/emulated/0/)
    问题 我已经写了一个代码来录制音频并将其保存到以下文件位置。 private String getFilename() { String filepath = Environment.getExternalStorageDirectory().getPath(); File file = new File(filepath, AUDIO_RECORDER_FOLDER); if (!file.exists()) { file.mkdirs(); } return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + file_exts[currentFormat]); } 在Logcat中,它为我提供了以下文件位置: /storage/emulated/0/AudioRecorder/1436854479696.mp4 我无法在SD卡上找到此文件位置。 如何访问位置? 回答1 正如Hiren所说,您将需要一个文件资源管理器来查看您的目录。 如果您是root用户,我强烈建议您使用root Explorer,否则ES File Explorer是一个不错的选择。 回答2 无需第三方应用 我的Android 6.0允许我浏览内部存储器,而无需第三方应用程序。 我只是这样做*: “设置” “存储和USB” “实习生”
  • 从iPhone上传的图片去除了exif数据(Image upload from iPhone strips exif data)
    问题 我建立了一个允许上传图片的网站,上传图片后,就会显示有关该图片的一些特定信息。 从计算机上载图片效果很好,当我尝试从智能手机上载图像时出现问题。 上载成功,但是现在似乎缺少从计算机上载时显示的数据的主要部分。 此代码部分是实际检索和显示数据的部分: $location = $_FILES["pic"]["tmp_name"]; $data = exif_read_data($location); var_dump($data); var_dump($data)实际上是在计算机和智能手机中转储不同的数据。 显然,它可以在Android智能手机上正常工作,仅当我尝试从iPhone上传图片时才会出现此问题。 例如,从计算机上传的var_dump : array(49) { ["FileName"]=> string(10) "php2D4.tmp" ["FileDateTime"]=> int(1367318152) ["FileSize"]=> int(30357) ["FileType"]=> int(2) ["MimeType"]=> string(10) "image/jpeg" ["SectionsFound"]=> string(24) "ANY_TAG, IFD0, EXIF, GPS" ["COMPUTED"]=> array(6) { ["html"]=>
  • 无法在React Native中显示图像(Can't show Image in React Native)
    问题 我正在使用本机0.28.0 我正在尝试根据本教程在iPhone模拟器上显示图像:React Native简介:使用JavaScript构建iOS应用| 阿普科达 var styles = StyleSheet.create({ image: { width: 107, height: 165, padding: 10 } } var imageURI = 'http://books.google.com/books/content?id=PCDengEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api' 然后在render()函数中,添加以下内容: <Image style={styles.image} source={{uri:imageURI}} /> 有分配给图像的空间,但是未显示图像。 回答1 希望以下解决方案可以为您提供帮助-所有这些都可用于Image 1. HTTPS解决方案: 您的图片由URI提供source={{uri:imageURI}} 例如: source={{uri: 'https://i.vimeocdn.com/portrait/58832_300x300.jpg'}} 重要提示:不要忘记设置剪辑两次:{{}} 2. HTTP解决方案: 如果您想使用http,请查看以下解决方案-HTTP
  • Android初始屏幕图像大小适合所有设备(Android splash screen image sizes to fit all devices)
    问题 我有一个全屏PNG,要在启动时显示。 那里只有一个错误,我也不知道每个可绘制文件夹( ldpi , mdpi , hdpi和xhdpi )的大小。 我的应用程序应该在所有手机和平板电脑上都能正常运行。 我应该创建什么尺寸(以像素为单位),以便初始画面在所有屏幕上都显示良好? 回答1 免责声明 这个答案是从2013年开始的,已经严重过时了。 从Android 3.2开始,现在有6组屏幕密度。 我会尽快对此答案进行更新,但没有ETA。 有关当前所有密度,请参阅官方文档(尽管始终很难找到有关特定像素尺寸的信息)。 这是tl / dr版本 创建4张图像,每个屏幕密度一张: xlarge(xhdpi):640x960 大(hdpi):480x800 中(mdpi):320x480 小(ldpi):240x320 阅读《 Android开发人员指南》中的9补丁图片介绍设计图像的区域可以安全拉伸而不会影响最终结果 有了这个,Android将为设备的图像密度选择合适的文件,然后它将根据9-patch标准拉伸图像。 tl结束; dr。 完整的帖子在后面 我在回答与设计有关的问题。 我不是开发人员,所以我将无法提供代码来实现所提供的许多解决方案。 las,我的目的是帮助与我开发第一款Android App时一样迷失的设计师。 适合所有尺寸 借助Android,公司可以开发几乎任何大小
  • 基于Paddle Lite在Android手机上实现图像分类
    原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 本文链接:基于Paddle Lite在Android手机上实现图像分类 前言 Paddle Lite是飞桨基于Paddle Mobile全新升级推出的端侧推理引擎,在多硬件、多平台以及硬件混合调度的支持上更加完备,为包括手机在内的端侧场景的AI应用提供高效轻量的推理能力,有效解决手机算力和内存限制等问题,致力于推动AI应用更广泛的落地。 本教程源码地址:https://github.com/yeyupiaoling/ClassificationForAndroid/tree/master/PaddleLiteClassification 模型转换 Paddle Lite使用的是PaddlePaddle保存的预测模型,如果不了解PaddlePaddle的模型保存,可以参考《模型的保存与使用》这篇文章。下面简单介绍一下保存模型的方式。通过使用fluid.io.save_inference_model()接口可以保存预测模型,预测模型值保存推所需的网络,不会保存损失函数等。当使用model_filename和params_filename指定参数之后,保存的预测模型只有两个文件,这种称为合并模型
  • IM开发宝典:史上最全,微信各种功能参数和逻辑规则资料汇总
    1、引言 IM应用的初学者们,在补全了各种基础技术知识后(如果您仍不具备这些知识,建议马上阅读《新手入门一篇就够:从零开发移动端IM》),在动手编码实践时,很多时候纠结的并不是功能该如何实现,而是这个功能该实现成什么样(没有经验,我特玛能找谁问问?)。 比如,最常见的纠结有以下这些: 1)离线聊天消息该保存多久?2)好友请求应该保存多久?3)短视频消息中的视频时长设为多大合适?4)图片、短视频、语音这些多媒体消息中,未读的文件数据保存多久?5)群管理的逻辑该怎么弄?参考微信?还是参考QQ?(关键是参考资料哪里有?)6)朋友圈限制最多发几张照片合适?... ... 嗯,这些问题,老板认为并不是问题,因为可以“参考微信”啊! 然而,微信又不会亲口说出来它的这些规则到底是多少?难不成要一个一个去试?那太扯了! 本文将根据微信官方目前已公开的资料,将它的一些常用功能参数和逻辑规则资料进行了汇总整理,希望能助力你的IM开发! 学习交流: - 即时通讯/推送技术开发交流5群:215477170[推荐] - 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》 本文已同步发布于“即时通讯技术圈”公众号,欢迎关注: ▲ 本文在公众号上的链接是:https://mp.weixin.qq.com/s/F-pVE9vN21h0Vm8LwnYplg 2、资料来源
  • 如何在Android Studio中的模拟器库中添加图像?(How to add an image to the emulator gallery in android studio?)
    问题 我正在开发图像过滤器应用程序。 但是,如果我没有任何图像,就无法真正尝试。 我知道我可以在电话中对其进行测试,但这并不相同,因为我需要错误消息和其他内容。 我只想从AVD的图库中访问图像,以便可以测试我的应用程序。 如何添加一个? 我正在使用Android Studio。 我看到了一些有关如何在Eclipse中执行此操作的示例,但我没有使用它。 那么,如何将图像添加到模拟器图像库中? 回答1 这是一个非常老的问题,但是我会回答这个问题以供将来参考。 要将任何文件添加到模拟器中,只需拖放文件即可。 该文件将被复制到内部存储器的downloads文件夹中。 访问文件 前往设置 单击“存储和USB” 单击内部存储 单击“探索”(最后) 并将其保存在下载文件夹中 现在,您将收到有关设置虚拟SD卡的通知,请按照设置进行操作。 成功设置后,您将可以在图库中看到图片。 回答2 我想补充Mithilesh Izardar的回答: 确实,最好的方法只是“拖放”,之后您可以在仿真器中的Settings → Storage → Internal Storage → Explore → Download (API 25)上找到文件。 我的问题是,按照这些步骤操作之后,图片既没有出现在“图库”中也没有出现在“下载”中(只需单击“下载”图标)。 原因是因为默认情况下,仿真器中的所有内容都没有权限
  • Android:支持所有设备的背景图片大小(以像素为单位)(Android: Background Image Size (in Pixel) which Support All Devices)
    问题 我正在创建一个可以在所有Android设备上运行的应用程序。 我想为我的应用创建xhdpi图形。 我的应用全屏显示。 我对创建图形感到困惑。 谁能告诉我我的背景图片的最佳尺寸(以像素为单位)。 例如: xhdpi:720x1280像素 hdpi:480x800像素分辨率:320x480像素 ldpi:240x320像素 给我建议最好的尺寸,它将出现在所有设备上。 因为我的图形是我应用程序的核心。 我希望每个设备都能获得所需的最佳图像。 Android将不会参与图像的压缩或扩展。 回答1 以下是使该应用程序在所有设备上运行的最佳尺寸。 要了解多个支持屏幕,您必须阅读http://developer.android.com/guide/practices/screens_support.html xxxhdpi: 1280x1920 px xxhdpi: 960x1600 px xhdpi: 640x960 px hdpi: 480x800 px mdpi: 320x480 px ldpi: 240x320 px 回答2 Android设备矩阵 ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi Launcher And Home 36*36 48*48 72*72 96*96 144*144 192*192 Toolbar And Tab 24*24 32
  • Android音视频开发:踩一踩“门槛”
    音视频行业已经发展很多年了,随着近几年移动端越来越多的音视频APP的出现,将音视频推向一个高潮,但是由于音视频的学习成本很高,很多开发者望而却步,为了跟紧时代的步伐,我写了这篇音视频基础,讲解了音视频的相关知识,给大家破除音视频的“高门槛”,希望可以共同进步。音频将声音保存成音频的过程,其实就是将模拟音频数字化的过程,为了实现这个过程,就需要对模拟音频进行采样、量化和编码。接下来我们详细讲解这一过程。采样采样是将信号从连续时间域上的模拟信号转换到离散时间域上的离散信号的过程(离散就是不连续),根据著名的奈奎斯特定理,需要按声音最高频率2倍进行采样,人耳能听到的声音是20Hz~20kHz,所以一般针对声音的采样率是44.1KHz(为什么是44.1KHz呢,而不是40KHz?因为经过尝试使用这个采样率进行采样效果最好)。下面列表一些其他的采样率,可作为参考。8,000 Hz - 电话所用采样率,对于人的说话已经足够11,025 Hz22,050 Hz - 无线电广播所用采样率32,000 Hz - miniDV数字视频camcorder、DAT(LP mode)所用采样率44,100 Hz - 音频CD,也常用于MPEG-1音频(VCD, SVCD, MP3)所用采样率47,250 Hz - Nippon Columbia(Denon)开发的世界上第一个商用PCM录音机所用采样率48
  • html学习笔记
    HTML学习笔记 @[TOC](HTML学习笔记) 认识网页常见浏览器介绍查看浏览器占有的市场份额(知晓)浏览器内核(理解) Web标准(重点)Web 标准的好处Web 标准构成 HTML 初识HTML骨架格式HTML标签分类HTML标签关系 开发工具文档类型字符集HTML标签的语义化为什么要有语义化标签 HTML标签排版标签标题标签 (熟记)段落标签( 熟记)水平线标签(认识)换行标签(熟记)div span标签(重点) 文本格式化标签(熟记)标签属性图像标签img (重点)链接标签(重点)锚点定位 (难点)base 标签 特殊字符标签 (理解)注释标签 路径(重点、难点)相对路径绝对路径 列表标签无序列表 ul (重点)有序列表 ol (了解)自定义列表(理解) 总结表格 table(会使用)创建表格表格属性表头标签表格结构(了解)表格标题合并单元格(难点)总结表格 表单标签(掌握)input 控件(重点)label标签(理解)textarea控件(文本域)下拉菜单表单域 HTML5新标签与特性文档类型设定字符设定常用新标签新增的input type属性值:常用新属性综合案例多媒体标签多媒体 embed(会使用)多媒体 audio多媒体 video 总结认识网页常见浏览器介绍查看浏览器占有的市场份额(知晓)浏览器内核(理解) Web标准(重点)Web 标准的好处Web 标准构成
  • 前端基础 - 移动端(Flex伸缩布局)
    移动端基础 浏览器现状 PC端常见浏览器:360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器、搜狗浏览器、IE浏览器。 移动端常见浏览器:UC浏览器,QQ浏览器,欧朋浏览器,百度手机浏览器,360安全浏览器,谷歌浏览器,搜狗手机浏览器,猎豹浏览器,以及其他杂牌浏览器。 国内的UC和QQ,百度等手机浏览器都是根据Webkit修改过来的内核,国内尚无自主研发的内核,就像国内的手机操作系统都是基于Android修改开发的一样。 总结:兼容移动端主流浏览器,处理Webkit内核浏览器即可。 手机屏幕的现状 移动端设备屏幕尺寸非常多,碎片化严重。Android设备有多种分辨率:480x800, 480x854, 540x960, 720x1280,1080x1920等,还有传说中的2K,4k屏。近年来iPhone的碎片化也加剧了,其设备的主要分辨率有:640x960, 640x1136, 750x1334, 1242x2208等。作为开发者无需关注这些分辨率,因为我们常用的尺寸单位是 px 。 移动端调试方法 Chrome DevTools(谷歌浏览器)的模拟手机调试搭建本地web服务器,手机和服务器一个局域网内,通过手机访问服务器使用外网服务器,直接IP或域名访问 视口 视口(viewport)就是浏览器显示页面内容的屏幕区域。 视口可以分为布局视口、视觉视口和理想视口 布局视口
  • 任务'app:mergeDebugResources'的Crunching Cruncher执行失败... png失败(Execution failed for task 'app:mergeDebugResources' Crunching Cruncher…png failed)
    问题 我已将一些格式为* .png的图片添加到我的drawable-directory中,并将其与布局链接。 但是每次我尝试构建它时,都会出现一个错误 “ ...粉碎Crunsher ... png失败” 以下是控制台的输出: app:mergeDebugResources AAPT out(1561599) : No Delegate set : lost message:Done AAPT out(12956469) : No Delegate set : lost message:Done AAPT out(20612543) : No Delegate set : lost message:Crunching C:\Dev\StudioProjects\test\android\app\src\main\res\drawable\bt_meeting_focused.png AAPT out(11030156) : No Delegate set : lost message:Crunching C:\Dev\StudioProjects\test\android\app\src\main\res\mipmap-mdpi\ic_launcher.png AAPT out(11030156) : No Delegate set : lost message:Crunching
  • Android图像调整大小并保留EXIF数据(方向,旋转等)(Android image resizing and preserving EXIF data (orientation, rotation, etc.))
    问题 如果您的Android应用使用设备相机拍摄图片然后调整大小(这是非常常见的做法,可以减小上传大小),则您可能没有意识到此调整大小操作会剥离Exif元数据。 这可能会引起问题,特别是如果所涉及的设备依靠“ Orientation”标签来正确显示垂直图像。 不同的Android设备以不同的方式处理摄像头/图像旋转-我信任的旧Nexus One似乎总是在捕获后立即旋转图像,因此在查看文件时,文件的本机内容始终是“竖直的”。 但是,其他设备(尤其是在我测试中的三星手机)不会旋转图像文件的内容-而是设置Exif'Orientation'标签。 每当稍后显示图像时,相关的图像代码应检测到方向“标签”的存在并适当旋转图像。 但是,如果您对图像进行了任何位图处理并将其保存到新文件中,则所有该Exif数据都会丢失。 除了方向数据外,您还可能会丢失其他有价值的元数据,例如品牌/型号等。 这让我感到困惑了几个星期(当在电话画廊中显示图像时,图像看起来是直立的,但是到达时我的服务器方向不好,没有明显的元数据)。 我在这里添加这个自我问题以帮助他人。 这篇博客文章非常有帮助: Android重新调整图片大小,而不会丢失EXIF信息 回答1 正如其他人指出的那样,您必须将Exif数据从原始图像复制到最终调整大小的图像。 Sanselan Android库通常最适合此功能。
  • 毕加索:内存不足(Picasso: out of memory)
    问题 我有一个RecyclerView ,它使用Picasso呈现多个图像。 在向上和向下滚动一段时间后,应用程序将出现以下消息,导致内存不足: E/dalvikvm-heap﹕ Out of memory on a 3053072-byte allocation. I/dalvikvm﹕ "Picasso-/wp-content/uploads/2013/12/DSC_0972Small.jpg" prio=5 tid=19 RUNNABLE I/dalvikvm﹕ | group="main" sCount=0 dsCount=0 obj=0x42822a50 self=0x59898998 I/dalvikvm﹕ | sysTid=25347 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1500612752 I/dalvikvm﹕ | state=R schedstat=( 10373925093 843291977 45448 ) utm=880 stm=157 core=3 I/dalvikvm﹕ at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) I/dalvikvm﹕ at android.graphics
  • 设计平板电脑的Android应用(Designing Android apps for tablets)
    问题 在Play开发者控制台中显示: 您的APK似乎不是为平板电脑设计的 但我在layout-sw600dp , layout-sw600dp-land , layout-sw720dp和layout-sw720dp-land文件夹中添加了布局。 完整清单(按原样): <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.technicosa.unjumble" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="18" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> <application
  • 如何设置Android锁屏图像(How to set android lock screen image)
    问题 我刚刚开始使用android编程,并且想看看是否有一种方法可以以编程方式设置锁定屏幕图像。 我已经找到了在API中设置墙纸的各种方法,但是似乎找不到用于设置锁屏图像的等效方法。 我见过很多帖子,说无法通过添加小部件或应用程序的位来定制锁定屏幕,但是肯定有一种方法可以通过编程设置图像吗? 干杯, 罗宾 回答1 Android中没有“锁定屏幕图像”。 最肯定的是,在股票的Android,HTC Sense,MOTOBLUR等之间没有“锁屏图像”的概念是相同的。这根本不是Android SDK的一部分。 Rijk先生所指向的项目是一个安全违规,伪装成锁屏替代品。 回答2 从API级别24开始,他们为WallpaperManager添加了新方法(并更新了文档)和标志,使您不仅可以将Wallpaper设置为主屏幕,还可以将其设置为Lockscreen 要将Wallpaper设置为Lockscreen使用新的标志WallpaperManager.FLAG_LOCK以及采用int which方法的一种方法。 WallpaperManager.getInstance(this).setStream(inputStream, null, true, WallpaperManager.FLAG_LOCK); 您也可以使用以下方法之一 int setStream (InputStream
  • 错误:打开失败:ENOENT(没有这样的文件或目录)(Error: open failed: ENOENT (No such file or directory))
    问题 我试图创建一个文件来保存相机中的图片,结果我无法创建该文件。 但是我真的找不到错误。 您可以看看并给我一些建议吗? private File createImageFile(){ File imageFile=null; String stamp=new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); File dir= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); String imageFileName="JPEG_"+stamp+"_"; try { imageFile=File.createTempFile(imageFileName,".jpg",dir); } catch (IOException e) { Log.d("YJW",e.getMessage()); } return imageFile; } 并且我添加了权限。 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 该方法总是会出现这样的错误: 打开失败:ENOENT(没有这样的文件或目录) 回答1 图片目录可能还不存在。
  • Android Bitmap图片优化分析
    原文地址:https://juejin.im/post/6844904166138069005 图片在移动开发中占据中举足轻重的地位,早期的android 应用页面Ui相对简单,但随着Android系统不断的升级发展, 界面元素越来越丰富,用户对体验要求越来越高,UI小姐姐们需要设计出精致的界面元素,其中不乏很多好看的图片,但是随着手机性能提升(分辨率,cpu主频,内存等),图片质量也越来越大,拍个照动不动就3M,4M,8M, 大家都知道,android 应用在创建进程时候,会分配一个指定的内存大小,准确的说话是 google原生OS的默认值是16M,但是各个厂家的系统会对这个值进行修改,如果我们应用“毫不吝啬”将这些大图直接加载到内存中,很快内存就会耗尽,最终出现OOM异常,所以图片的处理对于一个稳定、用户体验友好的应用来说非常重要,今天我们就来聊一聊Bitmap,在开发过程中把”图片“给优化一番,保证我们项目在线上稳定、流畅运行。 Bitmap 初识 Bitmap图像处理的最重要类之一,用它可以获取图像文件信息,进行图像颜色变换、剪切、旋转、缩放等操作,并可以指定格式保存图像文件。 如图,bitmap在sdk中算是元老级的人物了,从api1中就已经有了,可见其重要性。 继承关系就不解释了,实现了Parcelable 具备在内存中传递的特性。 bitmap中有两个重要的内部类
  • “ display:none”会阻止图像加载吗?(Does “display:none” prevent an image from loading?)
    问题 每个响应式网站开发教程都建议使用display:none CSS属性来隐藏内容,以免在移动浏览器中加载内容,从而使网站加载速度更快。 是真的吗 display:none是否不会加载图像或仍将内容加载到移动浏览器上? 有什么方法可以防止在移动浏览器上加载不必要的内容? 回答1 浏览器变得越来越聪明。 如今,如果浏览器可以确定图像没有用,则它可能会跳过图像加载(取决于版本)。 该图像具有display:none样式,但是脚本可以读取其大小。 如果父级为隐藏状态,Chrome v68.0不会加载图像。 您可以在此处进行检查:http://jsfiddle.net/tnk3j08s/ 您也可以通过查看浏览器开发人员工具的“网络”标签来进行检查。 请注意,如果浏览器在小型CPU计算机上,则不必渲染图像(和布局页面)将使整个渲染操作更快,但是我怀疑这在今天是否确实有意义。 如果要防止图像加载,可以简单地不将IMG元素添加到文档中(或将IMG src属性设置为"data:"或"about:blank" )。 回答2 如果将图像设为CSS中div的背景图像,则将该div设置为“ display:none”时,将不会加载该图像。 禁用CSS时,它仍然不会加载,因为CSS被禁用了。 回答3 答案并不像简单的是或否那样容易。 查看我最近做的测试结果: 在Chrome中:加载所有8张屏幕截图-*图像