Anlık görüntü verilerini al

Bu bölümde, desteklenen her bağlam türünün mevcut durumunu almak için Snapshot API'nin nasıl kullanılacağı gösterilmektedir. Daha fazla bilgi için Başlayın başlıklı makaleyi inceleyin. Desteği sonlandırılan içerik sinyalleri hakkında ayrıntılı bilgi için aşağıdaki genişletilebilir bildirimi açın:

Mevcut etkinliği alma

Kullanıcının mevcut etkinliğini almak için getDetectedActivity() işlevini çağırın. Bu işlev, kullanıcının en son etkinlikleri hakkında bilgi içeren bir ActivityRecognitionResult döndürür.

getDetectedActivity() yöntemi için com.google.android.gms.permission.ACTIVITY_RECOGNITION izni gerekir. Bu izni AndroidManifest.xml'e ekleyin.

Kullanıcının mevcut etkinliğini almak için aşağıdaki adımları uygulayın:

  1. SnapshotClient örneği oluşturmak için getSnapshotClient()'i arayın.
  2. DetectedActivityResponse dinleyebilecek bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.
  3. Sonuçların geçerli olduğundan emin olmak için getStatus() numaralı telefonu arayın.
  4. ActivityRecognitionResult iade etmek için DetectedActivityResponse.getActivityRecognitionResult() numaralı telefonu arayın. Bu özelliği kullanarak kullanıcının mevcut etkinliğinin birçok yönünü öğrenebilirsiniz. Örneğin:

Aşağıdaki kod örneğinde, algılanan en olası etkinliği almak ve sonucu konsola kaydetmek için getMostProbableActivity() kullanılır:

Awareness.getSnapshotClient(this).getDetectedActivity()
    .addOnSuccessListener(new OnSuccessListener<DetectedActivityResponse>() {
        @Override
        public void onSuccess(DetectedActivityResponse dar) {
            ActivityRecognitionResult arr = dar.getActivityRecognitionResult();
            DetectedActivity probableActivity = arr.getMostProbableActivity();

            int confidence = probableActivity.getConfidence();
            String activityStr = probableActivity.toString();
            mLogFragment.getLogView().println("Activity: " + activityStr
                + ", Confidence: " + confidence + "/100");
        }
    })

Yakındaki işaretçileri alma

Yakındaki işaretçi hakkında bilgi edinmek için getBeaconState() numaralı telefonu arayın. İşaretçi verileri, eklerin içeriğinden, türünden ve ad alanından oluşur.

getBeaconState() yöntemi için android.permission.ACCESS_FINE_LOCATION izni gerekir. Bu izni AndroidManifest.xml'a ekleyin. Ayrıca, Google Developers Console projeniz için Yakındaki Mesajlar API'sini etkinleştirmeniz gerekir. Daha fazla bilgi için Kayıt ve API Anahtarları ile Başlayın başlıklı makaleleri inceleyin.

Yakındaki işaretçiler hakkında bilgi edinmek için aşağıdaki adımları uygulayın:

  1. Kullanıcının gerekli izinleri verip vermediğini kontrol edin. Aşağıdaki örnekte, android.permission.ACCESS_FINE_LOCATION izninin verilip verilmediği kontrol edilir. Aksi takdirde kullanıcıdan izin istenir.

    if (ContextCompat.checkSelfPermission(
                MainActivity.this,
                Manifest.permission.ACCESS_FINE_LOCATION) !=
                PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    MainActivity.this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSION_LOCATION
            );
            return;
        }
    
  2. Bir BeaconState.TypeFilter tanımlayın. Bu işlev yalnızca belirtilen ad alanını ve türünü kullanarak kaydedilen ek içeren işaretçileri döndürür. Ayrıca, ek içeriğindeki bayttan bayta eşleşmeye göre de filtreleme yapabilirsiniz. Aşağıdaki örnekte tür filtresinin nasıl oluşturulacağı gösterilmektedir:

    private static final List<BeaconState.TypeFilter> BEACON_TYPE_FILTERS = Arrays.asList(
            BeaconState.TypeFilter.with(
                "my.beacon.namespace",
                "my-attachment-type"),
            BeaconState.TypeFilter.with(
                "my.other.namespace",
                "my-attachment-type"));
    
  3. getSnapshotClient.getBeaconState() numaralı telefonu arayın.

  4. BeaconStateResponse dinleyebilecek bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.

  5. Sonuçların geçerli olduğundan emin olmak için getStatus() numaralı telefonu arayın.

  6. İşaretçi durumunu döndürmek için BeaconStateResponse.getBeaconState() işlevini çağırın.

  7. BeaconState.BeaconInfo almak için BeaconState.getBeaconInfo() numaralı telefonu arayın.

Aşağıdaki örnekte, işaretçi bilgilerinin nasıl alınacağı gösterilmektedir:

Awareness.getSnapshotClient(this).getBeaconState(BEACON_TYPE_FILTERS)
    .addOnSuccessListener(new OnSuccessListener<BeaconStateResponse>() {
        @Override
        public void onSuccess(BeaconStateResponse beaconStateResponse) {
            BeaconStateResult beaconStateResult = beaconStateResponse.getBeaconState();
            BeaconState.BeaconInfo beaconInfo = beaconStateResponse.getBeaconInfo();
        }
    })

Kulaklık durumunu alma

Kulaklığın cihaza takılı olup olmadığını algılamak için getHeadphoneState() işlevini çağırın. Bu işlev, OnSuccessListener algıla olarak ayarlanmış bir HeadphoneStateResponse algılama durumu oluşturur. Ardından HeadphoneState almak için getHeadphoneState() numaralı telefonu arayabilirsiniz.

Mevcut kulaklık durumunu almak için aşağıdaki adımları uygulayın:

  1. getSnapshotClient.getHeadphoneState() numaralı telefonu arayın.
  2. HeadphoneStateResponse dinleyebilecek bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.
  3. Sonuçların geçerli olduğundan emin olmak için getStatus() numaralı telefonu arayın.
  4. Başarılı olduğunda, kulaklık durumunu döndürmek için HeadphoneStateResponse.getHeadphoneState() işlevini çağırın. Bu değer PLUGGED_IN veya UNPLUGGED'tır.

Aşağıdaki kod örneğinde, getHeadphoneState() işlevinin nasıl kullanılacağı gösterilmektedir:

Awareness.getSnapshotClient(this).getHeadphoneState()
    .addOnSuccessListener(new OnSuccessListener<HeadphoneStateResponse>() {
        @Override
        public void onSuccess(HeadphoneStateResponse headphoneStateResponse) {
            HeadphoneState headphoneState = headphoneStateResponse.getHeadphoneState();
            boolean pluggedIn = headphoneState.getState() == HeadphoneState.PLUGGED_IN;
            String stateStr =
                "Headphones are " + (pluggedIn ? "plugged in" : "unplugged");
            mLogFragment.getLogView().println(stateStr);
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.e(TAG, "Could not get headphone state: " + e);
        }
    });

Konum alma

getLocation() çağrısı yaparak kullanıcının mevcut konumunu (enlem-boylam) alabilirsiniz. Bu çağrı, LocationResponse döndürür. Ardından, mevcut konum verilerini içeren bir Location almak için LocationResponse.getLocation() numaralı telefonu arayabilirsiniz.

getLocation() yöntemi için android.permission.ACCESS_FINE_LOCATION izni gerekir. Bu izni AndroidManifest.xml'a ekleyin.

Mevcut konumu almak için aşağıdaki adımları uygulayın:

  1. Kullanıcının gerekli izinleri verip vermediğini kontrol edin. Aşağıdaki örnekte, android.permission.ACCESS_FINE_LOCATION izninin verilip verilmediği kontrol edilir. Aksi takdirde kullanıcıdan izin istenir.

    
    if (ContextCompat.checkSelfPermission(
                MainActivity.this,
                Manifest.permission.ACCESS_FINE_LOCATION) !=
                PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    MainActivity.this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSION_LOCATION
            );
            return;
        }
    
  2. getSnapshotClient.getLocation() numaralı telefonu arayın.

  3. LocationResponse dinleyebilecek bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.

  4. Sonuçların geçerli olduğundan emin olmak için getStatus() numaralı telefonu arayın.

  5. Mevcut Location'i döndürmek için LocationResponse.getLocation() numaralı telefonu arayın.

Aşağıdaki örnekte, mevcut konumun nasıl alınacağı gösterilmektedir:

Awareness.getSnapshotClient(this).getLocation()
    .addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
        @Override
        public void onSuccess(LocationResponse locationResponse) {
            Location loc = locationResponse.getLocationResult();
        }
    })