0

我正在遵循 Estimotes 开发人员文档中给出的示例。代码如下我在尝试将值传递给 scanID 变量时遇到“不兼容的类型错误”。

package e.user.estimotetelemetry;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.estimote.coresdk.recognition.packets.EstimoteTelemetry;
import com.estimote.coresdk.service.BeaconManager;

import java.util.List;

public class MainActivity extends AppCompatActivity {
private BeaconManager beaconManager;
private BeaconManager bm;
private String scanId;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    beaconManager = new BeaconManager(this);


    beaconManager.setTelemetryListener(new BeaconManager.TelemetryListener() {
        @Override
        public void onTelemetriesFound(List<EstimoteTelemetry> telemetries) {
            for (EstimoteTelemetry tlm : telemetries) {
                Log.d("TELEMETRY", "beaconID: " + tlm.deviceId +
                        ", temperature: " + tlm.temperature + " °C");
            }
        }
    });
        }

@Override protected void onStart() {
    super.onStart();
    beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
        @Override
        public void onServiceReady() {
   //         scanId =  beaconManager.startTelemetryDiscovery();  // This line shows up an incompatibility error as : incompatible types required java.lang.string found void
        }
    });
}
@Override
protected void onStop() {
    super.onStop();
 //   beaconManager.stopTelemetryDiscovery(scanId); //incompatible types required java.lang.string found void
}
}

如果有人可以帮助解决这个问题,那就太好了。提前致谢!

4

1 回答 1

0

用于遥测发现的 API 略有变化,看起来文档没有相应更新——我刚刚修复了这个问题。

在最新版本的 SDK 中,startTelemetryDiscovery不再返回 a scanIdstopTelemetryDiscovery也不再接受一个。您只需启动和停止扫描:

@Override protected void onStart() {
    super.onStart();
    beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
        @Override
        public void onServiceReady() {
            beaconManager.startTelemetryDiscovery();
        }
    });
}

@Override protected void onStop() {
    super.onStop();
    beaconManager.stopTelemetryDiscovery();
}
于 2018-06-11T09:48:45.183 回答