2015-04-17 43 views
0

任何帮助,想法我将被占用。 你好,你好,对不起,这些天我问了这么多问题。 我设计了简单的android应用程序,它使用相机并在布局中显示图片。看看附带的图片。 enter image description here如何使用意图拍照并通过电子邮件发送

一旦我点击“打开相机”按钮,它会弹出相机要求使用按相机buttom拍摄或拍照。我在这里需要的是,一旦相机打开,它应该通过它自己拍照,然后使用相机按钮,如果可能或不可以使用相机按钮。

enter image description here

如图片所示的后续问题,它要求用户的干扰按OK,如果用户喜欢它。在这一步中,我需要拍摄一张照片,一旦拍摄应该返回到主要活动。并将图片存储在图像视图中。 enter image description here

最后的请求或想法家伙如何发送此图片到用户的电子邮件干扰。 这里是代码-----------------------------------

public class MainActivity extends Activity { 
    ImageView viewpict; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     viewpict=(ImageView) findViewById(R.id.pict_result); 
     Button btn= (Button)findViewById(R.id.camera); 

     btn.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0) { 
       Intent intent = new Intent (android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      // Intent intent = new Intent (getApplicationContext(),MainActivity2.class); 

       //startActivity(intent); 
       startActivityForResult(intent,0); 

      } 

    }); 


    } 

protected void onActivityResult(int requestCode, int resultCode,Intent data) 
{ 
    if (requestCode==0) 
    { 
     Bitmap theimage = (Bitmap) data.getExtras().get("data"); 
     viewpict.setImageBitmap(theimage); 
    } 

} 

} 

+2

** 1。**自动捕捉图片?我不知道,但Google搜索后发现了什么? ** 2。**通过电子邮件发送图片(通过'Intent'),你会发现很多关于SO的问题。 – Sufian

回答

2

首先,您必须将该位图保存到SD卡,然后您可以将该图像附加到电子邮件。

保存位图到SD卡是

FileOutputStream out = null; 
try { 
out = new FileOutputStream(filename); 
bmp.compress(Bitmap.CompressFormat.PNG, 100, out); // bmp is your Bitmap instance 
// PNG is a lossless format, the compression factor (100) is ignored 
} catch (Exception e) { 
e.printStackTrace(); 
} 
    try { 
    if (out != null) { 
     out.close(); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 

} 

,然后你可以读出的图像和附加到电子邮件

为看看这个链接How to attach Bitmap to email android

1

要通过发送图像邮件, 你可以用这个:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("application/image"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, "Test Email"); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Test Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "From My App"); 
emailIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file:///mnt/sdcard/Myimage.jpeg")); 
startActivity(Intent.createChooser(emailIntent, "Send mail...")); 
1

在您的onActivityResult方法中,您应该打开一个新的活动来查看图像预览,其中一个具有带图像视图的xml,ok和取消按钮。

将您的位图发送到此活动并将其放入其imageview中 - 预览活动可以具有静态位图ImagePreview属性。

按下ok后,您应该将图像保存到sdcard,然后发送电子邮件,如@Moubeen所述。

+0

那么一旦相机打开,我该如何让相机立即拍摄照片或录制视频,有没有办法做到这一点。谢谢 –

1

您可以将位图转换为外部存储器中的PNG。

File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
File imageFile = new File(path, getCurrentTime()+ ".png"); 
FileOutputStream fileOutPutStream = new FileOutputStream(imageFile); 
bitmap.compress(Bitmap.CompressFormat.PNG, 80, fileOutPutStream); 

fileOutPutStream.flush(); 
fileOutPutStream.close(); 

然后,您将通过url.Parse()获取URI。你可以分享。

Uri.parse("file://" + imageFile.getAbsolutePath()); 


Intent intent= new Intent(android.content.Intent.ACTION_SEND); 
intent.setType("application/image"); 
intent.putExtra(android.content.Intent.EXTRA_EMAIL, "Email"); 
intent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Your Subject"); 
intent.putExtra(android.content.Intent.EXTRA_TEXT, "Text"); 
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + imageFile.getAbsolutePath())); 
startActivity(Intent.createChooser(intent, "mail sending")); 
相关问题