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şlangıç 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() yöntemini çağırın. Bu yöntem, 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 dosyasına 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() yöntemini çağırın.
  2. DetectedActivityResponse dinleyebilen bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.
  3. Sonucun geçerli olduğundan emin olmak için getStatus() yöntemini çağırın.
  4. ActivityRecognitionResult iade etmek için DetectedActivityResponse.getActivityRecognitionResult() numaralı telefonu arayın. Kullanıcının mevcut etkinliğinin birçok yönünü öğrenmek için bu API'yi kullanabilirsiniz. Örneğin:

Aşağıdaki kod örneğinde, algılanan en olası etkinliği almak ve sonucu konsola kaydetmek için getMostProbableActivity() kullanılmıştı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çiler hakkında bilgi edinmek için getBeaconState() işlevini çağırın. İşaretçi verileri; eklerin içeriği, türü ve ad alanından oluşur.

getBeaconState() yöntemi için android.permission.ACCESS_FINE_LOCATION izni gerekir. Bu izni AndroidManifest.xml uygulamasına ekleyin. Ayrıca, Google Developers Console projeniz için Nearby Messages API'yi etkinleştirmeniz gerekir. Daha fazla bilgi için Signup and API Keys (Kaydolma ve API Anahtarları) ve Get started (Başlangıç) sayfalarını 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 edilmektedir. 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. BeaconState.TypeFilter tanımlayın. Bu, yalnızca belirtilen ad alanı ve türle kayıtlı ekleri olan işaretçileri döndürür. Ek içeriğinde bayt bazında 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 dinleyebilen bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.

  5. Sonucun geçerli olduğundan emin olmak için getStatus() yöntemini çağırın.

  6. İşaretçi durumunu döndürmek için BeaconStateResponse.getBeaconState() yöntemini ç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() yöntemini çağırın. Bu yöntem, OnSuccessListener parametresi algılama olarak ayarlanmış bir HeadphoneStateResponse algılama durumu oluşturur. Ardından HeadphoneState değerini almak için getHeadphoneState() yöntemini çağırabilirsiniz.

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

  1. getSnapshotClient.getHeadphoneState() numaralı telefonu arayın.
  2. HeadphoneStateResponse dinleyebilen bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.
  3. Sonucun geçerli olduğundan emin olmak için getStatus() yöntemini çağırın.
  4. İşlem başarılı olursa kulaklık durumunu döndürmek için HeadphoneStateResponse.getHeadphoneState() yöntemini çağırın. Bu değer PLUGGED_IN veya UNPLUGGED olabilir.

Aşağıdaki kod örneğinde getHeadphoneState() öğesinin 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() işlevini çağırarak kullanıcının geçerli konumunu (enlem-boylam) alabilirsiniz. Bu işlev, LocationResponse döndürür. Ardından, mevcut konum verilerini içeren bir Location almak için LocationResponse.getLocation() numarasını arayabilirsiniz.

getLocation() yöntemi için android.permission.ACCESS_FINE_LOCATION izni gerekir. Bu izni AndroidManifest.xml adlı uygulamaya 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 edilmektedir. 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 dinleyebilen bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.

  4. Sonucun geçerli olduğundan emin olmak için getStatus() yöntemini çağırın.

  5. Mevcut Location değerini döndürmek için LocationResponse.getLocation() işlevini çağırı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();
        }
    })