Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我能';t记录此值。为什么?_Android - Fatal编程技术网

Android 我能';t记录此值。为什么?

Android 我能';t记录此值。为什么?,android,Android,下面是一个剪报,它成功地读取了SD卡上.PNG的高度和宽度,使LogCat相形见绌: import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; //... Bitmap bm

下面是一个剪报,它成功地读取了SD卡上.PNG的高度和宽度,使LogCat相形见绌:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;

//...

        Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/sample.png"); 
        int width = bmp.getWidth(); 
        int height = bmp.getHeight();
        int[] pix = new int[width * height]; 
        bmp.getPixels(pix, 0, width, 0, 0, width, height); 

        int R, G, B; 

        for (int y = 0; y < height; y++){
            for (int x = 0; x < width; x++) 
            {               
                int index = y * width + x;

                R = (pix[index] >> 16) & 0xff;     //bitwise shifting
                G = (pix[index] >> 8) & 0xff;
                B = pix[index] & 0xff;

    // [This is where I'd put it.  But I can't get a red line off the editor when I do anything.]  
            }
        }

        Log.v(TAG, width + "  " + height); 
导入android.app.Activity;
导入android.os.Bundle;
导入android.util.Log;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.os.Environment;
//...
位图bmp=BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath()+“/sample.png”);
int width=bmp.getWidth();
int height=bmp.getHeight();
int[]pix=新int[宽度*高度];
获取像素(像素,0,宽度,0,0,宽度,高度);
int R,G,B;
对于(int y=0;y>16)&0xff;//按位移位
G=(pix[index]>>8)&0xff;
B=pix[索引]&0xff;
//[这就是我要说的。但我做任何事都不能从编辑那里得到红线。]
}
}
对数v(标签,宽度+“”+高度);
我的问题是:我一辈子都不能用Log.v()来报告R、G或B的值。我所做的每件事都会在
v
下面画一条红线。我试过串()什么的。请帮忙。谢谢。

为了记录每个像素,您必须在循环中记录。那是你想记录的地方吗

如果您试图将其记录在与高度和宽度相同的位置,您希望记录哪个像素的值?如果图像是空的呢?如果这是您尝试执行的操作,则错误可能是由于使用了未初始化的变量。。。但这个错误只会引出一个更深层次的问题,即你到底想做什么

编辑:好的,结果是略有不同-这是一个很好的例子,说明了为什么给出失败的代码和没有失败的代码以及错误消息是什么很重要

因此,您尝试调用具有此签名的方法:

void v(String, String)
但你试着这样称呼它:

Log.v(TAG, R);
它试图将
int
作为
字符串传递。您需要将
int
值转换为字符串。在我看来,最好的方法是使用
String.valueOf

Log.v(TAG, String.valueOf(R));
话虽如此,如果您进行任何字符串合并,编译器将为您添加转换。因此,您可以执行以下任一操作:

Log.v(TAG, R + " " + G + " " + B);
Log.v(TAG, "Red: " + R);

作为旁注,我强烈建议,如果这给你带来了困难,那么读一本很好的Java入门书是值得的——这本书并不关注Android——并尝试编写一段时间的小型Java控制台应用程序。学习如何在一个新的客户机平台上开发,而不同时学习一门语言,已经够难的了。通过在语言方面投入更多的时间,从长远来看,你可能会节省精力。

哦。已解决:java.lang.String有一个valueOf方法。(我也是Java新手。)谢谢Jon。

我已经添加了Log.v的位置,如果它有效的话。这里的问题是:我在那里所做的任何事情都不会使R、G或B在语句的某个地方没有红线的情况下离开Eclipse编辑器。我不知道该写什么。如果可以的话,在添加了这个snip(以及适当的导入)的HelloAndroid上试试这个,因为我无法获得一个语句来报告TGB值。谢谢你的帮助。@user225626:那里应该很好。请显示您试图使用的确切行以及Eclipse向您显示的错误消息。“RGB”,而不是“TGB”。现在,这里的评论编辑器挡住了我的路。(几分钟后不允许编辑。)@user225626:我没有安装任何android开发环境,但我怀疑这是一个相当简单的问题。。。但我们确实需要看看你试过的那条线,以及它给出的错误。否则我们只是猜测,我想我的问题是我对语法不太了解,无法在语句R(或G或B)中表达。如果我这样写:Log.v(TAG,R);然后我在v下得到一个Eclipse编辑器红线。但我不知道还有什么可以写的。