最近写了一段代码,两个Activity,第一个Activity向第二个Activity传一张图片的位置信息(第二个Activity要用第一张图片的信息),第二个Activity部分内容为class Image{
public Bitmap image;
public int imlen=0;//图像总像素数
public int width;//图像像素矩阵宽
public int height;//图像像素高
public int[] pixel;
}
public class second extends Activity{
/** Called when the activity is first created. */
private ImageButton btn1;//打开文件
private EditText edt3;//显示第二幅图片位置
private ImageButton btn3;//Embedded
public ImageButton btn4;//extract
private ImageButton btn5;//save
private EditText edt;//password
private EditText edt1;//message
private ImageView img1;
public ProgressBar bar;
public Random random = new Random();
public String key = null;
static int[] epixel= null;
public int p=0;//进度条提示
//static int b=0;
public Image spic = new Image();
public Image fpic = new Image();//也许错
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
findview();
btn1.setOnClickListener(new MyButtonListener());//打开文件,寻找图片
setImg();
String location = intent.getStringExtra("location");
BitmapFactory.Options options = new BitmapFactory.Options();
if(options != null && location != null)
{
Toast.makeText(second.this,"有执行噢", Toast.LENGTH_SHORT).show();
options.inSampleSize = 2;
fpic.image = BitmapFactory.decodeFile(location, options);//get first image
if(fpic.image != null)
{
Toast.makeText(second.this,"也有执行噢", Toast.LENGTH_SHORT).show();
fpic.image = fpic.image.copy(Bitmap.Config.ARGB_8888, true);
fpic.imlen = (int) fpic.image.getHeight()*fpic.image.getWidth();
fpic.pixel = new int[fpic.imlen];
fpic.image.getPixels(fpic.pixel,0,fpic.image.getWidth(),0,0,fpic.image.getWidth(),fpic.image.getHeight());
fpic.height = fpic.image.getHeight();
fpic.width = fpic.image.getWidth();
}
}//第一幅图片读取完
btn3.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {//TODO Auto-generated method stub
//if(b==0)
//Toast.makeText(second.this,"请先从图库中选择图片", Toast.LENGTH_SHORT).show();
//else
if(edt.getText().toString().length()==0)
Toast.makeText(second.this,"请先输入要密钥", Toast.LENGTH_SHORT).show();
else
if(edt1.getText().toString().length()==0)
Toast.makeText(second.this,"请先输入要嵌入的内容", Toast.LENGTH_SHORT).show();
else{
try {
Toast.makeText(second.this,"开始啦", Toast.LENGTH_SHORT).show();
key = edt.getText().toString();
byte[] message = edt1.getText().toString().getBytes("ASCII");//嵌入信息(Byte形式)
int[] embed = new int[message.length*8];
embed= match(message,fpic.pixel);//得到匹配序列
String slocation = edt3.getText().toString();
int c= 9;
BitmapFactory.Options options = new BitmapFactory.Options();
if(options != null && slocation != null)
{
options.inSampleSize = 2;
spic.image = BitmapFactory.decodeFile(slocation, options);//get first image
if(spic.image != null)
{
spic.image = spic.image.copy(Bitmap.Config.ARGB_8888, true);
spic.imlen = (int) spic.image.getHeight()*spic.image.getWidth();
spic.pixel = new int[spic.imlen];
spic.image.getPixels(spic.pixel,0,spic.image.getWidth(),0,0,spic.image.getWidth(),spic.image.getHeight());
}
}
spic.height = spic.image.getHeight();
spic.pixel = embeded(spic.pixel,embed,key);//嵌入匹配序列
edt.setText("");//将Password置空
edt1.setText("");//将嵌入信息置空
//b=2;
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(second.this,"异常抛出啦!!!!问题没有解决,加油吧", Toast.LENGTH_SHORT).show();
}
}
}
});
//btn3.setOnClickListener(new EmButtonListener());
}
public void setImg() {
// TODO Auto-generated method stub
Bundle bun=this.getIntent().getExtras();
if(bun!=null){
String str;
str =bun.getString("FName");
edt3.setText(str);
Bitmap map=BitmapFactory.decodeFile(bun.getString("FName"));
img1.setImageBitmap(map);
}
}
public void findview(){
btn1 = (ImageButton) findViewById(R.id.btn1);
edt3 = (EditText) findViewById(R.id.edt3);
btn3 = (ImageButton) findViewById(R.id.btn3);
btn4 = (ImageButton) findViewById(R.id.btn4);
btn5 = (ImageButton) findViewById(R.id.btn5);
edt = (EditText) findViewById(R.id.edt0);
edt1 =(EditText) findViewById(R.id.edt1);
img1 = (ImageView) findViewById(R.id.img1);
bar = (ProgressBar)findViewById(R.id.firstBar);
}
class MyButtonListener implements OnClickListener {
@Override
public void onClick (View v)
{
//TODO Auto-generated method stub
Intent in=new Intent();
in.setClass(second.this, FileMang.class);
startActivity(in);
// b=1;//定义点击顺序的变量
finish();
}
}
其中btn3.setOnClickListener要用到fpic这个类中的pixel数组内容,但是我现在写的代码无法把这个参数传递过来,请教大神们帮助看看,该怎么改
public Bitmap image;
public int imlen=0;//图像总像素数
public int width;//图像像素矩阵宽
public int height;//图像像素高
public int[] pixel;
}
public class second extends Activity{
/** Called when the activity is first created. */
private ImageButton btn1;//打开文件
private EditText edt3;//显示第二幅图片位置
private ImageButton btn3;//Embedded
public ImageButton btn4;//extract
private ImageButton btn5;//save
private EditText edt;//password
private EditText edt1;//message
private ImageView img1;
public ProgressBar bar;
public Random random = new Random();
public String key = null;
static int[] epixel= null;
public int p=0;//进度条提示
//static int b=0;
public Image spic = new Image();
public Image fpic = new Image();//也许错
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
findview();
btn1.setOnClickListener(new MyButtonListener());//打开文件,寻找图片
setImg();
String location = intent.getStringExtra("location");
BitmapFactory.Options options = new BitmapFactory.Options();
if(options != null && location != null)
{
Toast.makeText(second.this,"有执行噢", Toast.LENGTH_SHORT).show();
options.inSampleSize = 2;
fpic.image = BitmapFactory.decodeFile(location, options);//get first image
if(fpic.image != null)
{
Toast.makeText(second.this,"也有执行噢", Toast.LENGTH_SHORT).show();
fpic.image = fpic.image.copy(Bitmap.Config.ARGB_8888, true);
fpic.imlen = (int) fpic.image.getHeight()*fpic.image.getWidth();
fpic.pixel = new int[fpic.imlen];
fpic.image.getPixels(fpic.pixel,0,fpic.image.getWidth(),0,0,fpic.image.getWidth(),fpic.image.getHeight());
fpic.height = fpic.image.getHeight();
fpic.width = fpic.image.getWidth();
}
}//第一幅图片读取完
btn3.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {//TODO Auto-generated method stub
//if(b==0)
//Toast.makeText(second.this,"请先从图库中选择图片", Toast.LENGTH_SHORT).show();
//else
if(edt.getText().toString().length()==0)
Toast.makeText(second.this,"请先输入要密钥", Toast.LENGTH_SHORT).show();
else
if(edt1.getText().toString().length()==0)
Toast.makeText(second.this,"请先输入要嵌入的内容", Toast.LENGTH_SHORT).show();
else{
try {
Toast.makeText(second.this,"开始啦", Toast.LENGTH_SHORT).show();
key = edt.getText().toString();
byte[] message = edt1.getText().toString().getBytes("ASCII");//嵌入信息(Byte形式)
int[] embed = new int[message.length*8];
embed= match(message,fpic.pixel);//得到匹配序列
String slocation = edt3.getText().toString();
int c= 9;
BitmapFactory.Options options = new BitmapFactory.Options();
if(options != null && slocation != null)
{
options.inSampleSize = 2;
spic.image = BitmapFactory.decodeFile(slocation, options);//get first image
if(spic.image != null)
{
spic.image = spic.image.copy(Bitmap.Config.ARGB_8888, true);
spic.imlen = (int) spic.image.getHeight()*spic.image.getWidth();
spic.pixel = new int[spic.imlen];
spic.image.getPixels(spic.pixel,0,spic.image.getWidth(),0,0,spic.image.getWidth(),spic.image.getHeight());
}
}
spic.height = spic.image.getHeight();
spic.pixel = embeded(spic.pixel,embed,key);//嵌入匹配序列
edt.setText("");//将Password置空
edt1.setText("");//将嵌入信息置空
//b=2;
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(second.this,"异常抛出啦!!!!问题没有解决,加油吧", Toast.LENGTH_SHORT).show();
}
}
}
});
//btn3.setOnClickListener(new EmButtonListener());
}
public void setImg() {
// TODO Auto-generated method stub
Bundle bun=this.getIntent().getExtras();
if(bun!=null){
String str;
str =bun.getString("FName");
edt3.setText(str);
Bitmap map=BitmapFactory.decodeFile(bun.getString("FName"));
img1.setImageBitmap(map);
}
}
public void findview(){
btn1 = (ImageButton) findViewById(R.id.btn1);
edt3 = (EditText) findViewById(R.id.edt3);
btn3 = (ImageButton) findViewById(R.id.btn3);
btn4 = (ImageButton) findViewById(R.id.btn4);
btn5 = (ImageButton) findViewById(R.id.btn5);
edt = (EditText) findViewById(R.id.edt0);
edt1 =(EditText) findViewById(R.id.edt1);
img1 = (ImageView) findViewById(R.id.img1);
bar = (ProgressBar)findViewById(R.id.firstBar);
}
class MyButtonListener implements OnClickListener {
@Override
public void onClick (View v)
{
//TODO Auto-generated method stub
Intent in=new Intent();
in.setClass(second.this, FileMang.class);
startActivity(in);
// b=1;//定义点击顺序的变量
finish();
}
}
其中btn3.setOnClickListener要用到fpic这个类中的pixel数组内容,但是我现在写的代码无法把这个参数传递过来,请教大神们帮助看看,该怎么改
能详细一点吗?我不懂parcelable接口啊