Anlık görüntü verilerini al

Bu bölümde, desteklenen bağlam türlerinin her birinin mevcut durumunu almak için Snapshot API'nin nasıl kullanılacağı gösterilmektedir. Daha fazla bilgi için Başlangıç 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:

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 etkinlikleriyle ilgili bilgileri 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 için ekleyin.

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

  1. getSnapshotClient() SnapshotClient örneğini oluşturmak için.
  2. addOnSuccessListener kullanarak DetectedActivityResponse dinleyebilen bir OnSuccessListener oluşturun.
  3. Sonucun geçerli olduğundan emin olmak için getStatus() numaralı telefonu arayın.
  4. ActivityRecognitionResult ürününü 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 yöntemi kullanabilirsiniz. Örneğin:

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

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 beacon'ları alma

Yakındaki beacon'lar hakkında bilgi almak için getBeaconState() numaralı telefonu arayı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'a ekleyin. Ayrıca, Google Developers Console projeniz için Nearby Messages API'yi etkinleştirmeniz gerekir. Daha fazla bilgi için Kaydolma ve API Anahtarları ve Başlangıç 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. BeaconState.TypeFilter tanımlayın. Bu işlev, yalnızca belirtilen ad alanı ve türle kaydedilmiş ekleri olan işaretçileri döndürür. Ayrıca, ek içeriğinde bire bir 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. addOnSuccessListener kullanarak BeaconStateResponse dinleyebilen bir OnSuccessListener oluşturun.

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

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

  7. BeaconState.getBeaconInfo() numaralı telefonu arayarak BeaconState.BeaconInfo alın.

Aşağıdaki örnekte, Beacon 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ıkların cihaza takılı olup olmadığını algılamak için getHeadphoneState() işlevini çağırın. Bu işlev, OnSuccessListener değeri algılama olarak ayarlanmış bir HeadphoneStateResponse algılama durumu oluşturur. Ardından getHeadphoneState() numarasını arayarak HeadphoneState değerini alabilirsiniz.

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

  1. getSnapshotClient.getHeadphoneState() numaralı telefonu arayın.
  2. addOnSuccessListener kullanarak HeadphoneStateResponse dinleyebilen bir OnSuccessListener oluşturun.
  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() işlevini çağırın. Bu değer PLUGGED_IN veya UNPLUGGED'dir.

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() numarasına yapılan bir aramayla kullanıcının mevcut konumunu (enlem-boylam) alabilirsiniz. Bu arama, 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'ye 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. addOnSuccessListener kullanarak LocationResponse dinleyebilen bir OnSuccessListener oluşturun.

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

  5. Mevcut Location'ı iade etmek 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();
        }
    })