小编Rob*_*ore的帖子

排球 - 直接下载到文件(没有内存字节数组)

我正在使用Volley作为我在Android中正在进行的项目中的网络堆栈.我的部分要求是下载可能非常大的文件并将其保存在文件系统中.

我一直在研究凌空的实现,似乎凌空的唯一方法就是将整个文件下载到一个潜在的大量字节数组中,然后将这个字节数组的处理推迟到一些回调处理程序.

由于这些文件可能非常大,我担心下载过程中出现内存不足错误.

有没有办法告诉volley将http输入流中的所有字节直接处理成文件输出流?或者这需要我实现自己的网络对象?

我在网上找不到任何关于此的资料,所以任何建议都将不胜感激.

android memory-management fileoutputstream android-volley

8
推荐指数
1
解决办法
5979
查看次数

以编程方式锁定android中的方向

我有以下代码.

Java的

public void lockScreenOrientation() {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
}

public void unlockScreenOrientation() {
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
Run Code Online (Sandbox Code Playgroud)

我从javascript调用这些函数.控制正在进入这些方法.但是方向未锁定.

我试过跟随锁定方向

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)

这些似乎都不起作用.任何指针都会有所帮助.

java android screen-orientation

6
推荐指数
2
解决办法
1万
查看次数

将位图保存到磁盘时,实体路径显示工件

[编辑:我做了一个最小的项目,试图缩小正在发生的事情.底部的代码在保存时仍会生成相同的工件]

我有一个使用Paths绘制简单2D几何的应用程序.形状都是纯色,有时alpha <255,可以用线条装饰.在绘制几何图形的视图中,从未出现过如何绘制事物的问题.但是,当我使用相同的代码绘制到位图,然后将其保存为JPEG(100质量)或PNG时,输出文件的纯色区域中始终存在相同的伪像.这是一种通常与JPEG压缩相关的斑点.

查看截图: 活动截图

保存的图片: 保存的图像文件

放大文物: 放大文物

我尝试了以下内容

  • 保存为PNG和JPEG
  • 打开和关闭抖动和抗锯齿
  • 增加位图的DPI,并允许Bitmap使用其默认API
  • 应用矩阵我用作几何表示的相机,而不是将其应用于位图的Canvas
  • 在整个应用范围内打开和关闭硬件加速
  • 使用第三方库将位图保存为.bmp文件

所有这些都会产生相同的文物,既不会变得更糟也不会更好.

public class MainActivity extends AppCompatActivity {
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.context = getApplicationContext();
}

// button OnClick listener
public void saveImage(View view) {
    new saveBitmapToDisk().execute(false);
}

public Bitmap getBitmap() {
    final int bitmapHeight = 600, bitmapWidth = 600;
    Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
    Canvas bitmapCanvas = new Canvas(bitmap);

    float[] triangle = new float[6];
    triangle[0] = bitmapWidth / 2;
    triangle[1] …
Run Code Online (Sandbox Code Playgroud)

png android jpeg artifacts android-bitmap

5
推荐指数
1
解决办法
1316
查看次数