총 게시물 933건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

블루투스에 대해 궁금한것이 있습니다..

글쓴이 : 쪼렙개봘자 날짜 : 2017-11-02 (목) 15:55 조회 : 456
글주소 : http://www.androidside.com/B49_best/12835
 
  아두이노 전문쇼핑몰/카페운영
아두이노 키트상품10% 할인판매중/도매 쇼핑몰, 아두이노 카페 회원 9만명 운영중
arduinostory.net
  산업용 블루투스 전문 펌테크
BLE 모듈,각종스마트폰과 통신 가능한 초소형 모듈,데이터,오디오용블루투스모듈판매
www.firmtech.co.kr
  블루투스, 옥션
블루투스 올킬특가! 스마일클럽 12% 쿠폰, 누구나10%+중복10%, 어서옥션!
www.auction.co.kr
신청하기


제가 비콘스캔을 하는 서비스를 만들어서 앱이 홈버튼을 통해 비활성화가 되더라도 비콘스캔을 하고싶은데.. 자꾸 콜백함수로 날라오는게 null값으로 날라옵니다... 혹시 무슨 문제인지 알수있나해서요. 비활성화 되기까지는 제대로 날라오는데 자꾸 홈버튼만되면 잘작동이 안됩니다..ㅠㅠ

public class TestService extends Service {

private static final String LOG_TAG = "MainActivity";

private BluetoothManager btManager;
private BluetoothAdapter btAdapter;
private Handler scanHandler = new Handler();

private int scan_interval_ms = 1000;

private boolean isScanning = false;

@Override
public void onCreate() {
super.onCreate();



}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

Log.i("UUID", "onstartcommand");

btManager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);
btAdapter = btManager.getAdapter();

scanHandler.post(scanRunnable);

return START_STICKY;
}

private Runnable scanRunnable = new Runnable()
{
@Override
public void run() {

Log.i("UUID", "run");

if (isScanning)
{
if (btAdapter != null)
{
Log.i("UUID", "stop");
btAdapter.stopLeScan(leScanCallback);
}
}
else
{
if (btAdapter != null)
{
Log.i("UUID", "start");
btAdapter.startLeScan(leScanCallback);
}
}

isScanning = !isScanning;

scanHandler.postDelayed(this, scan_interval_ms);
}
};

private BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback()
{
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord)
{
Log.i("UUID", "onlescan");
int startByte = 2;
boolean patternFound = false;
while (startByte <= 5)
{
if ( ((int) scanRecord[startByte + 2] & 0xff) == 0x02 && //Identifies an iBeacon
((int) scanRecord[startByte + 3] & 0xff) == 0x15)
{ //Identifies correct data length
patternFound = true;
break;
}
startByte++;
}

if (patternFound)
{
//Convert to hex String
byte[] uuidBytes = new byte[16];

System.arraycopy(scanRecord, startByte + 4, uuidBytes, 0, 16);
String hexString = bytesToHex(uuidBytes);

if(hexString.equals("E2C56DB5DFFB48D2B060D0F5A71096E1")) {
//UUID detection
String uuid = hexString.substring(0, 8) + "-" +
hexString.substring(8, 12) + "-" +
hexString.substring(12, 16) + "-" +
hexString.substring(16, 20) + "-" +
hexString.substring(20, 32);


// major
final int major = (scanRecord[startByte + 20] & 0xff) * 0x100 + (scanRecord[startByte + 21] & 0xff);

// minor
final int minor = (scanRecord[startByte + 22] & 0xff) * 0x100 + (scanRecord[startByte + 23] & 0xff);

//로그
Log.i(LOG_TAG, "UUID: " + uuid + "\\nmajor: " + major + "\\nminor" + minor + "MAC :" + device + "RSSI : " + rssi);
}

}

}
};

static final char[] hexArray = "0123456789ABCDEF".toCharArray();
private static String bytesToHex(byte[] bytes)
{
char[] hexChars = new char[bytes.length * 2];
for ( int j = 0; j < bytes.length; j++ )
{
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}

@Override
public void onDestroy() {
Log.i("UUID", "종료");

super.onDestroy();
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}



}



쪼렙개봘자 님의 개발 Q&A FAQ 최신글 [더보기]


질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

안사 이쁜이 2017-11-02 (목) 15:55
축하드립니다. ;)
쪼렙개봘자님은 안사 이쁜이에 당첨되어 5 포인트 지급되었습니다.
에찌 2017-11-02 (목) 17:23
안드로이드 버전이 먼가요? 26?
댓글주소 추천 0 반대 0
     
     
에찌 2017-11-02 (목) 17:24
[@에찌] 서비스를 시작하는 부분에서 문제가 생기신거 같은데 .. 에러로그를 올려주시면 더 좋을 거 같네요
댓글주소 추천 0 반대 0
          
          
쪼렙개봘자 2017-11-02 (목) 17:29
[@에찌] 별다른 에러는 없고 ㅠㅠ
11-02 17:28:07.511 30280-30280/pracj.myapplication D/BluetoothAdapter: startLeScan(): null
11-02 17:28:07.511 30280-30280/pracj.myapplication D/BluetoothAdapter: STATE_ON
11-02 17:28:07.511 30280-30280/pracj.myapplication D/BluetoothAdapter: STATE_ON
11-02 17:28:07.511 30280-30280/pracj.myapplication D/BluetoothLeScanner: Start Scan
11-02 17:28:07.511 30280-30280/pracj.myapplication D/BluetoothAdapter: STATE_ON
11-02 17:28:07.511 30280-30280/pracj.myapplication D/BluetoothAdapter: STATE_ON
11-02 17:28:07.521 30280-30280/pracj.myapplication D/BluetoothAdapter: STATE_ON
11-02 17:28:07.521 30280-30280/pracj.myapplication D/BluetoothAdapter: STATE_ON
11-02 17:28:07.571 30280-30291/pracj.myapplication D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=8
이런 로그만 계속 올라옵니다 ..ㅠㅠ
댓글주소 추천 0 반대 0
          
          
쪼렙개봘자 2017-11-02 (목) 17:40
[@에찌]혹시 24버전으로 낮추어도 안되는건가요?? 
댓글주소 추천 0 반대 0
     
     
쪼렙개봘자 2017-11-02 (목) 17:25
[@에찌] 네! 26입니다 ㅠ
댓글주소 추천 0 반대 0
          
          
에찌 2017-11-02 (목) 17:27
[@쪼렙개봘자] 안드로이드 26 버전에서는 서비스를 백그라운드로 돌릴경우 문제가 발생합니다.
원하시는 서비스를 이용하기위해서는 JobService 쪽으로 가셔야할 듯합니다.

댓글주소 추천 0 반대 0
               
               
에찌 2017-11-02 (목) 17:28
[@에찌] https://medium.com/@cwdoh/android-o%EC%97%90%EC%84%9C%EC%9D%98-%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-jobintentservice-250af2f7783c 이거 한번 보세요~
댓글주소 추천 0 반대 0
                    
                    
쪼렙개봘자 2017-11-02 (목) 17:30
[@에찌] 네 한번 읽어보도록 하겠습니다!
댓글주소 추천 0 반대 0
                         
                         
에찌 2017-11-02 (목) 17:35
[@쪼렙개봘자]https://developer.android.com/about/versions/oreo/background.html#overview 이것도 읽어보세요~
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기