2016-09-28 3 views
0

Итак, я пытаюсь создать кнопку, которая запускает приложение для камеры, а затем берет изображение и загружает его на сервер синтаксического анализа, однако, похоже, он неправильно загружает изображение, он выходит из строя, но он не дает мне выход ошибки, не уверен, почему он, возможно, пытается загрузить файл в качестве изображения. Мой код ниже. `private File imageFile; TextView imageFilePath; EditText editTxt;Загрузка изображения для синтаксического анализа после фотографирования

String selectedVenue; 
String id; 
String currentUser; 
ParseGeoPoint location; 
String venueType; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gen_post); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    editTxt = (EditText) findViewById(R.id.txtInput); 

    Intent i = getIntent(); 
    location = new ParseGeoPoint(i.getDoubleExtra("Lat",0.0),i.getDoubleExtra("Lon",0.0)); 
    currentUser= ParseUser.getCurrentUser().getUsername(); 

} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    onBackPressed(); 
    return true; 
} 

public void uploadComment(View view){ 
    String input = editTxt.getText().toString(); 
    Log.i("AppInfo", "uploading"); 
    if(input.equals("")|| input.equals(null)){ 
     Toast.makeText(this,"You must write something",Toast.LENGTH_SHORT); 
    } 
    else{ 
     ParseObject object = new ParseObject("UserCommentary"); 
     if(imageFile != null){ 
      Bitmap bitmapImage = BitmapFactory.decodeFile(imageFile.getAbsolutePath()); 
      ByteArrayOutputStream oStream = new ByteArrayOutputStream(); 
      bitmapImage.compress(Bitmap.CompressFormat.JPEG, 50, oStream); 
      byte[] byteArray = oStream.toByteArray(); 
      object.put("comment", input); 
      object.put("Location",location); 
      object.put("image",true); 
      object.put("imgFile",byteArray); 
     } 
     else { 
      object.put("comment", input); 
      object.put("Location",location); 
      object.put("image",false); 
     } 
     object.saveInBackground(); 
    } 
    onBackPressed(); 


} 

public void takePhoto(View view) { 

    Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    imageFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), currentUser+".jpeg"); 
    Uri tempuri = Uri.fromFile(imageFile); 
    takePicture.putExtra(MediaStore.EXTRA_OUTPUT, tempuri); 
    takePicture.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1); 
    startActivityForResult(takePicture, 0); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == 0){ 
     switch (resultCode){ 
      case Activity.RESULT_OK: 
       if(imageFile.exists()){ 
        imageFilePath.setText(imageFile.getAbsolutePath()); 

       } 
       else{ 
        Toast.makeText(this,"Error taking picture",Toast.LENGTH_LONG).show(); 
       } 
       break; 
      case Activity.RESULT_CANCELED: 
       break; 
      default : 
       break; 
     } 
    } 
}` 

ответ

0

Ниже приведено учебное пособие по загрузке изображения в облако анализа.

http://www.androidbegin.com/tutorial/android-parse-com-image-upload-tutorial/

Из сравнения между вашей реализацией и учебником один, я думаю, вы пропустили следующий код:

// Create the ParseFile passing byte array (image) 
ParseFile file = new ParseFile("androidbegin.png", image); 
// Upload the image into Parse Cloud 
file.saveInBackground(); 

, а затем использовать этот парсинг файл для хранения в синтаксическом анализе объекта, как следующее:

object.put("imgFile",file); 

Надеюсь, что это поможет.

+0

Вау, это сделал. Благодаря! –

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