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:
getSnapshotClient()SnapshotClientörneğini oluşturmak için.addOnSuccessListenerkullanarakDetectedActivityResponsedinleyebilecek birOnSuccessListeneroluşturun.- Sonucun geçerli olduğundan emin olmak için
getStatus()numaralı telefonu arayın. ActivityRecognitionResultürününü iade etmek içinDetectedActivityResponse.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:- Yalnızca en olası etkinliği almak için
getMostProbableActivity()numaralı telefonu arayın. - Olasılığa göre sıralanmış son etkinliklerin listesini almak için
getProbableActivities()numaralı telefonu arayın. - Belirli bir etkinlik türü için güven değerini döndürmek üzere
getActivityConfidence()işlevini çağırın. - Bir
IntentActivityRecognitionResultiçerip içermediğini tespit etmek içinhasResult()'ı arayın.
- Yalnızca en olası etkinliği almak iç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:
Kullanıcının gerekli izinleri verip vermediğini kontrol edin. Aşağıdaki örnekte,
android.permission.ACCESS_FINE_LOCATIONizninin 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; }BeaconState.TypeFiltertanı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"));getSnapshotClient.getBeaconState()numaralı telefonu arayın.addOnSuccessListenerkullanarakBeaconStateResponsedinleyebilecek birOnSuccessListeneroluşturun.Sonucun geçerli olduğundan emin olmak için
getStatus()numaralı telefonu arayın.Beacon durumunu döndürmek için
BeaconStateResponse.getBeaconState()işlevini çağırın.BeaconState.BeaconInfoalmak içinBeaconState.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:
getSnapshotClient.getHeadphoneState()numaralı telefonu arayın.addOnSuccessListenerkullanarakHeadphoneStateResponsedinleyebilecek birOnSuccessListeneroluşturun.- Sonucun geçerli olduğundan emin olmak için
getStatus()numaralı telefonu arayın. - İşlem başarılı olduğunda kulaklık durumunu döndürmek için
HeadphoneStateResponse.getHeadphoneState()işlevini çağırın. Bu değerPLUGGED_INveyaUNPLUGGEDolmalı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:
Kullanıcının gerekli izinleri verip vermediğini kontrol edin. Aşağıdaki örnekte,
android.permission.ACCESS_FINE_LOCATIONizninin 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; }getSnapshotClient.getLocation()numaralı telefonu arayın.addOnSuccessListenerkullanarakLocationResponsedinleyebilecek birOnSuccessListeneroluşturun.Sonucun geçerli olduğundan emin olmak için
getStatus()numaralı telefonu arayın.Mevcut
Locationcihazınızı iade etmek içinLocationResponse.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();
}
})