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ıç başlıklı makaleyi inceleyin. 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 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 hesabına 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 dinleyebilecek 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. Bunu, kullanıcının mevcut etkinliğinin birçok yönünü elde etmek için 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 işaretçileri alma

Yakındaki beacon'lar hakkında bilgi almak için getBeaconState() işlevini çağırın. Beacon 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'ye 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 beacon'lar 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 beacon'ları 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 dinleyebilecek 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.BeaconInfo almak için BeaconState.getBeaconInfo() numaralı telefonu arayı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ığın cihaza takılı olup olmadığını algılamak için getHeadphoneState() işlevini çağırın. Bu işlev, OnSuccessListener algılama durumunu algılama olarak ayarlayarak 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. addOnSuccessListener kullanarak HeadphoneStateResponse dinleyebilecek bir OnSuccessListener oluşturun.
  3. Sonucun geçerli olduğundan emin olmak için getStatus() numaralı telefonu arayın.
  4. İşlem 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 olmalıdır.

Aşağıdaki kod örneğinde getHeadphoneState() kullanımına ilişkin bir örnek verilmiştir:

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 mevcut konumunu (enlem-boylam) alabilirsiniz. Bu işlev, LocationResponse döndürür. Ardından, mevcut konum verileriyle 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 adresine 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 dinleyebilecek bir OnSuccessListener oluşturun.

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

  5. Mevcut Location cihazınızı 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();
        }
    })