2012-05-09 3 views
0

Я хочу отобразить захваченное изображение в теге img на странице html. Я могу получить значение URI на data.getData() из события OnActivityResult. Но я не знаю, в каком формате я могу отправить изображение и отобразить его в теге img. Пожалуйста, м кто поможетAndroid: Дисплей Захваченное изображение в теге img

Camera.java:

public class Camera extends Activity 
    { 
     private static final int CAMERA_REQUEST = 1888; 
     private String selectedImagePath; 
     WebView webview; 
     String fileName = "capturedImage.jpg"; 
     private static Uri mCapturedImageURI; 

     @Override 
     public void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
       webview=(WebView)findViewById(R.id.webView1); 
     } 

     public void TakePhoto() 
     { 
       ContentValues values = new ContentValues(); 
       values.put(MediaStore.Images.Media.TITLE, fileName); 
       mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
       Intent cameraIntent = new Intent(ACTION_IMAGE_CAPTURE); 
       cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
       startActivityForResult(cameraIntent, CAMERA_REQUEST); 
     }  
     @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) 
     { 
      if (resultCode == RESULT_OK) 
       { 
        if (requestCode == CAMERA_REQUEST) 
        { 
        selectedImagePath = getPath(mCapturedImageURI); 
       webview.loadUrl("javascript:ReceivePhoto(\""+selectedImagePath+"\")"); 
        } 
       } 
     } 

     public String getPath(Uri uri) { 
      String[] projection = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = managedQuery(uri, projection, null, null, null); 
      int column_index = cursor 
        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      return cursor.getString(column_index); 
     } 

    } 

Html:

function CallBack(resultimage) 
{ 
     myimg.src = resultimage; 
} 

После приема фотографий активности перезагружается & при запуске моего приложения, она показывает «Ожидание для отладки ... . ". Какую ошибку я сделал? кто может помочь мне ...

+0

Я бы не сказал, проблема в вашем коде. Проверьте: http://stackoverflow.com/questions/2501450/android-release-version-and-waiting-for-debugger и http://stackoverflow.com/questions/644469/cant-debug-android-applications и http : //stackoverflow.com/questions/4375375/how-to-resolve-waiting-for-debugger-message – Zelimir

ответ

0

У вас есть решение. :-)

public class Camera extends Activity 
{ 
    private static final int CAMERA_REQUEST = 1888; 
    private String selectedImagePath; 
    WebView webview; 
    String fileName = "capturedImage.jpg"; 
    FileOutputStream fo; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
      webview=(WebView)findViewById(R.id.webView1); 
    } 

    public void TakePhoto() 
    { 

      Intent cameraIntent = new Intent(ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_REQUEST); 
    }  
    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     if (resultCode == RESULT_OK) 
      { 
       if (requestCode == CAMERA_REQUEST) 
       { 
       Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      photo.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 
      Random randomGenerator = new Random();randomGenerator.nextInt(100); 
      String newimagename=randomGenerator.toString()+".jpg"; 
      File f = new File(Environment.getExternalStorageDirectory() 
            + File.separator + newimagename); 
      try { 
       f.createNewFile(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      //write the bytes in file 

      try { 
       fo = new FileOutputStream(f.getAbsoluteFile()); 
      } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      try { 
       fo.write(bytes.toByteArray()); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      webview.loadUrl("javascript:ReceivePhoto(\""+f.getAbsolutePath()+"\")"); 
       } 
      } 
    } 

    public String getPath(Uri uri) { 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = managedQuery(uri, projection, null, null, null); 
     int column_index = cursor 
       .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } 

} 

ManifestFile:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

Если вы хотите установить изображение растрового изображения в ImageView, то используйте ImageView img = (ImageView) findViewById (R.id .imageView1); img.setImageBitmap (фото); – Ponmalar

+0

Кто-нибудь поможет мне очистить все экземпляры, закрывая приложение, подобное Dispose() в C#. – Ponmalar

Смежные вопросы