0

Так что базовая информация о том, чтобы обновить макет, который является ImageView, но для этого нужно прекратить ранжирование для маяков и использовать beaconManager.unbind (контекст) и другое обновление привязки изображения снова beaconManager .bind (context) probleam заключается в том, что этот контекст должен быть «org.altbeacon.beacon.BeaconConsumer», как создать контекст этого типа или не так, но нужно вызвать другой метод beaconManager для остановки rangin и начать снова?обновить макет при чтении расстояний от Beacon

public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 

       /* 
       if (beacons.size() > 0) { 
        Log.i(TAG, "The first beacon I see is about " + beacons.iterator().next().getDistance() + " meters away."); 
       } 
       */ 



       for(Beacon beacon: beacons){ 

        double distancia = beacon.getDistance(); 

        if(false) { 
         int rssi = beacon.getRssi(); 
         int power = beacon.getTxPower(); 
         //double distancia = beacon.getDistance(); 

         distancias.add(beacon.getDistance()); 
         Log.i(TAG, "Beacon detected with id1: " + beacon.getId1() + " id2:" + beacon.getId2() + " id3: " + beacon.getId3() + " distance: " + beacon.getDistance()); 
         Log.i(TAG, "rss value->" + rssi + " power->" + power); 
        } 


        if(distancia <= 1.0){ 
         Log.i(TAG,"esta a 1m de alcance"); 



         /* 
         Bitmap bmp = BitmapFactory.decodeResource(context.getResources(),R.drawable.image5m); 
         Radar.setImageBitmap(bmp); 
         */ 


        }else if(distancia <= 2.0){/ 
         Log.i(TAG,"esta a 2m de alcance"); 

         //org.altbeacon.beacon.BeaconConsumer 
         //beaconManager.setAndroidLScanningDisabled(true);//setMonitorNotifier 
         beaconManager.unbind(ex); 

         Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.image10m); 
         Radar.setImageBitmap(bmp); 
+0

Я не знаю, почему вы хотите, чтобы остановить в диапазоне для маяков в этом случае, но правильный способ, чтобы остановить в пределах, чтобы позвонить 'beaconManager.stopRangingBeaconsInRegion (область),' вместо вызова 'отвязать ' – davidgyoung

+0

ok, я хочу обновить макет, но получаю' Только исходный поток, создавший иерархию представлений, может коснуться его представлений, так есть ли прямой способ остановить поток lib, чтобы вернуться к основному потоку? –

+0

См. Мой ответ для простого решения. – davidgyoung

ответ

1

Вам не нужно останавливать сканирование маяка, чтобы обновить интерфейс. Вам просто нужно выполнить изменение пользовательского интерфейса в потоке пользовательского интерфейса. Как это:

runOnUiThread(new Runnable() { 
    public void run() { 
     Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.image10m); 
     Radar.setImageBitmap(bmp); 
    } 
}); 
+0

спасибо что это –

Смежные вопросы