小编Chr*_*pix的帖子

将图像加载到Bitmap对象时出现奇怪的内存不足问题

我有一个列表视图,每行有几个图像按钮.单击列表行时,将启动新活动.由于相机布局有问题,我不得不建立自己的标签.为结果启动的活动是地图.如果我单击我的按钮启动图像预览(从SD卡加载图像),应用程序将从活动返回到活动返回到listview结果处理程序以重新启动我的新活动,这只是一个图像小部件.

列表视图上的图像预览正在使用光标和ListAdapter.这使得它非常简单,但我不确定如何放置一个经过调整大小的图像(即小的像素大小不像动态src图像按钮那样.所以我只是调整了从手机摄像头下来的图像.

问题是当我试图返回并重新启动第二个活动时,我收到内存不足错误.

  • 有没有办法我可以轻松地逐行构建列表适配器,我可以在运行中调整大小(有点明智)?

这是更好的,因为我还需要对每行中的小部件/元素的属性进行一些更改,因为焦点问题我无法选择带触摸屏的行.(我可以用滚球.)

  • 我知道我可以做一个带外调整大小并保存我的图像,但这不是我想要做的,但是一些示例代码会很好.

一旦我在列表视图上禁用了图像,它再次正常工作.

仅供参考:这就是我的做法:

String[] from = new String[] { DBHelper.KEY_BUSINESSNAME,DBHelper.KEY_ADDRESS,DBHelper.KEY_CITY,DBHelper.KEY_GPSLONG,DBHelper.KEY_GPSLAT,DBHelper.KEY_IMAGEFILENAME  + ""};
int[] to = new int[] {R.id.businessname,R.id.address,R.id.city,R.id.gpslong,R.id.gpslat,R.id.imagefilename };
notes = new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
setListAdapter(notes);
Run Code Online (Sandbox Code Playgroud)

哪里R.id.imagefilenameButtonImage.

这是我的LogCat:

01-25 05:05:49.877: ERROR/dalvikvm-heap(3896): 6291456-byte external allocation too large for this process.
01-25 05:05:49.877: ERROR/(3896): VM wont let us allocate 6291456 bytes
01-25 05:05:49.877: ERROR/AndroidRuntime(3896): Uncaught handler: thread main exiting due to …
Run Code Online (Sandbox Code Playgroud)

android image bitmap out-of-memory android-bitmap

1252
推荐指数
33
解决办法
60万
查看次数

将位图保存到位置

我正在开发一个功能,从Web服务器下载图像,将其显示在屏幕上,如果用户希望保留图像,请将其保存在某个文件夹中的SD卡上.是否有一种简单的方法来获取位图并将其保存到我选择的文件夹中的SD卡?

我的问题是我可以下载图像,将其作为位图显示在屏幕上.我能够找到将图像保存到特定文件夹的唯一方法是使用FileOutputStream,但这需要一个字节数组.我不确定如何从Bitmap转换(如果这是正确的方法)到字节数组,所以我可以使用FileOutputStream来写入数据.

我有另一个选择是使用MediaStore:

MediaStore.Images.Media.insertImage(getContentResolver(), bm,
    barcodeNumber + ".jpg Card Image", barcodeNumber + ".jpg Card Image");
Run Code Online (Sandbox Code Playgroud)

哪个可以保存到SD卡,但不允许您自定义文件夹.

android bitmap save

457
推荐指数
12
解决办法
47万
查看次数

未找到Android SSL连接的信任锚

我正在尝试连接到运行godaddy 256位SSL证书的IIS6盒子,我收到错误:

java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Run Code Online (Sandbox Code Playgroud)

一直试图确定可能导致这种情况的原因,但现在正在绘制空白.

这是我如何连接:

HttpsURLConnection conn;              
conn = (HttpsURLConnection) (new URL(mURL)).openConnection();
conn.setConnectTimeout(20000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
String tempString = toString(conn.getInputStream()); 
Run Code Online (Sandbox Code Playgroud)

ssl android ssl-certificate

156
推荐指数
10
解决办法
33万
查看次数

禁用/检查模拟位置(防止gps欺骗)

希望找到防止/检测Android上的GPS欺骗的最佳方法.关于如何实现这一点的任何建议,以及可以做些什么来阻止它?我猜测用户必须打开模拟位置欺骗GPS,如果这样做,那么他们可以欺骗GPS吗?

我想我只需要检测是否启用了Mock Locations?还有其他建议吗?

gps android spoof

83
推荐指数
5
解决办法
13万
查看次数

Android:捕获活动的返回

我对启动新活动有疑问.归结为此.我在视图上有3个选项卡

A) contains gMap activity
 B) camera activity
 C) some random text fields.
Run Code Online (Sandbox Code Playgroud)

要求是应用程序以纵向模式运行.

除了Camera Preview Surface(B)之外,所有3个选项卡都按预期工作.它旋转了90度.他们唯一的方法就是将应用程序设置为横向,这会抛出我所有的标签,并且几乎不可行.

我的解决方案是:替换

我的相机活动有一个空的常规活动,除了

Intent i = new Intent(this,CameraActivity.class);
    startActivity(i);
Run Code Online (Sandbox Code Playgroud)

这将启动我的CameraActivity.这很好.我必须做一个线性布局并包含3个看起来像真正的标签的图像,所以我可以尝试模仿标签的操作,同时将屏幕旋转到横向并将视觉效果保持为纵向.用户可以单击其中一个图像(按钮)以显示下一个选项卡.这是我的问题.它应退出我的"相机活动",返回选项卡中的"空白活动",应该将其解释为从我的图像中单击已删除的选项卡.

最重要的是,当它返回时,它返回到选项卡下的空白(黑色)页面(因为它是'空').如何将返回事件捕获回调用该活动的页面,然后查看它们执行了哪些操作?

我可以设置一个onclicklistener,我可以响应被点击的假标签(图像)退出相机活动.退出时,选项卡应更新,以便您返回.有什么建议?

谢谢,

android exit android-intent android-activity

81
推荐指数
1
解决办法
7万
查看次数

尝试将SD卡中的文件附加到电子邮件中

我正在尝试启动Intent来发送电子邮件.所有这一切都有效,但当我尝试实际发送电子邮件时,会发生一些"奇怪"的事情.

这是代码

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("image/jpeg");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Photo");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://sdcard/dcim/Camera/filename.jpg"));
sendIntent.putExtra(Intent.EXTRA_TEXT, "Enjoy the photo");
startActivity(Intent.createChooser(sendIntent, "Email:"));
Run Code Online (Sandbox Code Playgroud)

因此,如果我使用Gmail菜单上下文启动它会显示附件,让我输入电子邮件的来源,并编辑正文和主题.没什么大不了.我点击发送,它发送.唯一的事情是附件不会被发送.

所以.我想,为什么不尝试使用电子邮件菜单上下文(对于我手机上的备份电子邮件帐户).它显示附件,但在身体或主体中根本没有文字.当我发送它时,附件发送正确.这会让我相信一些事情是错误的.我是否需要在Manifest发布中获得新的权限才能发送带附件的电子邮件?我究竟做错了什么?

email android attachment android-intent

69
推荐指数
3
解决办法
7万
查看次数

Android:反向地理编码 - getFromLocation

我想基于long/lat得到一个地址.似乎这样的事情应该有效吗?

Geocoder myLocation = Geocoder(Locale.getDefault());
    List myList = myLocation.getFromLocation(latPoint,lngPoint,1);
Run Code Online (Sandbox Code Playgroud)

问题是我不断得到:方法Geocoder(Locale)未定义类型savemaplocation

任何帮助都会有所帮助.谢谢.


谢谢,我尝试了上下文,首先是locale,然后失败并且正在查看其他一些构造函数(我曾经看过一个只提到locale).而不管,

它没有用,因为我仍然得到:方法Geocoder(Context,Locale)未定义类型savemaplocation

我有:import android.location.Geocoder;

android reverse-geocoding street-address

50
推荐指数
5
解决办法
12万
查看次数

当paint设置为Stroke时,Android Canvas.drawTextOnPath看起来不正确

我在扩展视图中有一些代码设置,它可以做一些容易缩放的绘图(类似矢量).(我的比例设置为0-1.0)

我注意到当我将绘制填充设置为FILL时,路径上绘制的文本看起来是正确的,但是当我将填充设置为笔划(我只想要文本的轮廓)时,图像看起来就像是在某个LSD行程中.这是我的示例代码:

    Paint yellowPaint = Paints.getFillTextPaint(0.01f, 0xFFffea3e, 0.065f);
    canvas.drawTextOnPath(mContext.getString(R.string.building_a_partnership),
             Paths.getRoundedTextPath(mOuterCircleRectF, 280f, 350f),
             0, -0.025f, yellowPaint);

public static Paint getFillTextPaint(float f, int color, float textSize) {
        Paint textPaint = new Paint();
        textPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
        textPaint.setStyle(Paint.Style.FILL);
        textPaint.setColor(color);
        textPaint.setTextSize(textSize);
        textPaint.setStrokeWidth(f);
        textPaint.setShadowLayer(0.002f, 0.0f, 0.0f, 0xFF000000);
        textPaint.setTypeface(Typeface.SANS_SERIF);
        return textPaint;
    }
Run Code Online (Sandbox Code Playgroud)

如果我将Paint.Style从FILL更改为STROKE,我会得到下面的图像.我使用了canvas.drawText(),它可以很好地显示描边字母.只有当它应用于Path时才会变得奇怪.

填写图片

中风图像

android view path stroke

27
推荐指数
1
解决办法
3087
查看次数

OutofMemoryError:位图大小超过VM预算(Android)

在BitmapFactory中获取异常.不确定是什么问题.(我可以猜到这个问题,但不确定为什么会发生这种情况)

ERROR/AndroidRuntime(7906): java.lang.OutOfMemoryError: bitmap size exceeds VM budget

ERROR/AndroidRuntime(7906):     at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:295)

我的代码很简单.我定义了一个带有默认图像的XML布局.我尝试在SD卡上加载一个bm(​​如果存在 - 它是).如果不是,则显示默认图像.无论如何..这是代码:

public class showpicture extends Activity {
  public void onCreate(Bundle savedInstanceState) {

         /** Remove menu/status bar **/
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         final Window win = getWindow();   
         win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

            Bitmap bm;
         super.onCreate(savedInstanceState);
         setContentView(R.layout.showpicture);
            try {
         ImageView mImageButton = (ImageView)findViewById(R.id.displayPicture);
         bm = Bitmap.createScaledBitmap(BitmapFactory.decodeFile("/sdcard/dcim/Camera/20091018203339743.jpg"),100, 100, true);
         parkImageButton.setImageBitmap(bm);
         }
         catch (IllegalArgumentException ex) {
          Log.d("MYAPP",ex.getMessage());
         } 
            catch (IllegalStateException ex) {
Run Code Online (Sandbox Code Playgroud)

它没有bm=Bitmap.createScaledBitmap任何想法?我在论坛上做了一些研究,它指出了这篇文章, 我只是不知道为什么它不起作用.任何帮助都会很棒!谢谢,

克里斯.

android exception bitmap dalvik

22
推荐指数
3
解决办法
3万
查看次数

在Android中自定义状态选项卡

我知道如何在每个标签上放置图标,这没问题.我也跑过这个:[Stack Overflow线程几乎一样] [1]

我按照该问题的一个链接找到[this] [2]

差不多,它说要使用XML中定义的选择器,当然,这样做了.但是没有与之关联的id,因此我不确定如何将选择器功能作为drawable,因此我可以将其用作选项卡的图标.也许我会以错误的方式解决这个问题.但这就是我所拥有的,显然缺少了一些东西.

<selector
    android:id="@+id/myselector"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Non focused states -->
    <item
        android:state_focused="false"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/darklogo" />
    <item
        android:state_focused="false"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/lightlogo" />

    <!-- Focused states -->
    <item
        android:state_focused="true"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/lightlogo" />
    <item
        android:state_focused="true"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/lightlogo" />

    <!-- Pressed -->
    <item
        android:state_pressed="true"
        android:drawable="@drawable/lightlogo" />
</selector>
Run Code Online (Sandbox Code Playgroud)

在我的代码中,使用以下命令生成示例选项卡:

  host.addTab(host.newTabSpec("three")  
                .setIndicator("map",drawables)  
                .setContent(new Intent(this, Map.class))); 
Run Code Online (Sandbox Code Playgroud)

现在drawable只是对可绘制图像资源的引用.如何使选择器成为可绘制的?

这是我的问题[1]:更新Android标签图标 [2]:http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385

tabs android selector drawable

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