Anlık görüntü verileri alın

Bu bölümde, desteklenen bağlam türlerinin her biri için geçerli durumu almak amacıyla Snapshot API'nin nasıl kullanılacağı gösterilmektedir. Daha fazla bilgi için Başlayın bölümüne bakın. Kullanımdan kaldırılan içerik sinyalleriyle ilgili ayrıntılar için aşağıdaki genişletilebilir bildirimi açın:

Geçerli etkinliği al

Kullanıcının geçerli etkinliğini öğrenmek için kullanıcının son etkinlikleri hakkında bilgi içeren ActivityRecognitionResult değerini döndüren getDetectedActivity() işlevini çağırın.

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

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

  1. SnapshotClient örneğini oluşturmak için getSnapshotClient() yöntemini çağırın.
  2. DetectedActivityResponse ifadesini dinleyen bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.
  3. Sonucun geçerli olduğundan emin olmak için getStatus() numaralı telefonu arayın.
  4. Bir ActivityRecognitionResult döndürmek için DetectedActivityResponse.getActivityRecognitionResult() numaralı telefonu arayın. Bunu kullanıcının mevcut etkinliğinin birçok farklı özelliğinden yararlanmak için kullanabilirsiniz. Örneğin:

Aşağıdaki kod örneği, tespit edilen en olası etkinliği almak ve sonucu konsola kaydetmek için getMostProbableActivity()'i kullanı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 alın

Yakındaki işaretçiler hakkında bilgi edinmek için getBeaconState() numaralı telefonu arayın. İşaretçi verileri, tüm 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 hesabına ekleyin. Ayrıca, Google Developers Console projeniz için Nearby Messages API'yi etkinleştirmeniz gerekir. Daha fazla bilgi için Kayıt ve API Anahtarları ve Başlayın bölümlerine bakın.

Yakındaki işaretçiler hakkında bilgi 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 örnek, android.permission.ACCESS_FINE_LOCATION izninin verilip verilmediğini kontrol eder. Açık değilse 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şlem yalnızca belirtilen ad alanı ve türle kaydedilmiş eklere sahip işaretçileri döndürür. Ayrıca, ek içeriğindeki baytlar arası eşlemeye göre filtreleme de yapabilirsiniz. Aşağıdaki örnekte bir tür filtresinin nasıl oluşturulacağı gösterilmektedir:

    private static final List 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 ifadesini dinleyen bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.

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

  6. İşaretçi durumunu döndürmek için BeaconStateResponse.getBeaconState() numaralı telefonu arayı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 öğrenme

Kulaklığın cihaza takılı olup olmadığını algılamak için getHeadphoneState() işlevini çağırın. Bu durumda HeadphoneStateResponse algılama durumu, algılanacak şekilde OnSuccessListener olarak ayarlanır. Ardından HeadphoneState değerini 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 ifadesini dinleyen bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.
  3. Sonucun geçerli olduğundan emin olmak için getStatus() numaralı telefonu arayın.
  4. Başarılı olursa kulaklık durumunu döndürmek için HeadphoneStateResponse.getHeadphoneState() numaralı telefonu arayın. Bu değer PLUGGED_IN veya UNPLUGGED olur.

Aşağıdaki kod örneğinde getHeadphoneState()'in 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

LocationResponse değerini döndüren getLocation() çağrısıyla kullanıcının geçerli konumunu (enlem-boylam) alabilirsiniz. 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 hesabına ekleyin.

Geçerli 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 örnek, android.permission.ACCESS_FINE_LOCATION izninin verilip verilmediğini kontrol eder. Açık değilse 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 ifadesini dinleyen bir OnSuccessListener oluşturmak için addOnSuccessListener kullanın.

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

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

Aşağıdaki örnekte geçerli 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();
        }
    })