배터리 조회가 제 마음대로 되지 않습니다.

class XxxImpl {
private Context ctx;
public XxxImpl(Context ctx) {
    this.ctx = ctx;
}

public void xxx() {
    getBatteryLvl();
    Toast.makeText(ctx, "2222", Toast.LENGTH_SHORT).show();
}

private int batteryLvl;
private void getBatteryLvl() {
BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
    if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {
     int rawlevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
     int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
     if(rawlevel >= 0 && scale >= 0) {
      batteryLvl = (rawlevel*100)/scale;
     }
     Toast.makeText(ctx, "1111", Toast.LENGTH_SHORT).show();
     
    } /* end if() */
   } /* end onReceive() */
  };
  ctx.registerReceiver(mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
}


xxx() 메소드를 실행하면 토스트 메시지가 2222 표시후 1111이 표시 됩니다.
batteryLvl값은 0으로 나오구요.

어떻게 안 될까요?

(모토로이에 연결된)LogCat 정보를 보면
pid     tag            message
7675 AtCBC      level: 100
7675 AtCBC      scale: 100
7675 CIND        the Battery info is level:100 scale: 100

위정보를 조회 할 수 있는 메소드는 없을까요?