2016-07-21 1 views
1

Может кто-нибудь объяснить, что код запроса камеры?Что означает код запроса камеры в Android?

Почему мы используем его?

Я пытался практиковать в android, и я вижу код.

это мой код, который я делаю;

public class imageActivity extends AppCompatActivity { 

    Button image; 
    private static final int CAMERA_REQUEST = 1888; 
    private ImageView imageView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_resim); 

     imageView = (ImageView)this.findViewById(R.id.imageView1); 
     image = (Button) findViewById(R.id.capture); 

     image.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(cameraIntent, CAMERA_REQUEST); 
      } 
     }); 


    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 
      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      imageView.setImageBitmap(photo); 
     } 
    } 
} 
+1

пройти через этот ответ - https://developer.android.com/training/basics/intents/result .html –

+0

Пожалуйста, добавьте немного более подробно на ваш вопрос. Вы спрашиваете, для чего используется значение CAMERA_REQUEST? –

+0

@JosephRosson да – kinyas

ответ

4

Вы можете сделать несколько звонков в одной деятельности к startActivityForResult(), что позволяет различные Intent s делать различные действия. Используйте код запроса, чтобы определить, который является Intent, с которого вы возвращаетесь.

Например:

Вы можете начать два действия результата:

private static final int CAMERA_REQUEST = 1888; 
private static final int GALLERY_REQUEST = 1889; 
startActivityForResult(cameraIntent, CAMERA_REQUEST); 
startActivityForResult(cameraIntent, GALLERY_REQUEST); 

и в вашем onActivityForResult()

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 
     //Do stuff with the camara data result 
    } 
    else if (requestCode == GALLERY_REQUEST && resultCode == RESULT_OK) { 
     //Do stuff with the gallery data result 
    } 
} 

Обратите внимание, что private static final int s совершенно произвольны ,

+1

спасибо. Я отклоняю ваш ответ, как другие, которые отвечают в моем вопросе. – kinyas

+0

Добро пожаловать! вы можете установить один из них, как ответ, чтобы избежать получения большего количества сообщений. : D –

1

Для того, чтобы обнаружить/подтвердить ЗАПРОС, когда вы получите ОТВЕТ, мы используем CAMERA_REQUEST.

1

используется для получения результата камеры Intent

if (requestCode == CAMERA_REQUEST) { 
    if (resultCode == RESULT_OK) { 
     // Image captured and saved to fileUri specified in the Intent 

    } else if (resultCode == RESULT_CANCELED) { 
     // User cancelled the image capture 
    } else { 
     // Image capture failed, advise user 
    } 
} 

See Official Documentation

1

Это то, что это означает:

При запуске активность в результате, как запрос камеры принять вашу фотографию, то вернуть его к вызывающему деятельности, вы передаете ему уникальное целое значение, как 100001 или что-нибудь у вас есть не используется уже в этом классе.

Так, в общем, CAMERA_REQUEST может быть любое значение, которое вы указали в своем классе, как это:

private static final int CAMERA_REQUEST = 10001; 

Теперь, так как вы прошли его при запросе фотографию с камеры, вы будете использовать его, чтобы проверить requestCode, потому что он должен будет соответствовать ему, если он предназначен для самой камеры.

Надеюсь, это поможет вам понять.

1

onActivityResult() может обрабатывать более одного человека, например, если у вас есть намерение выбрать изображение из галереи, его результат также получен в onActivityResult().

Чтобы определить, какой результат мы получили, мы добавили идентификатор, поэтому мы используем CAMERA_REQUEST. Надеюсь ты понимаешь.

1

Если вы задаете вопрос о причине CAMERA_REQUEST, вы можете думать о нем как о произвольном значении отслеживания, которое вы предоставляете, и которое будет передано вам обратно, когда результаты будут возвращены из вызова startActivityForResult.

документация говорит, что это,

requestCode int: If >= 0, this code will be returned in onActivityResult() when the activity exits. 

Ссылка: https://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, целое)