마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 스튜디오 오류좀 잡아주세요 부탁드립니다.

0 추천

안드로이드 스튜디오를 처음 접하고 안드로이드ble스캔 어플 예제를 보고 열심히 공부하는 중입니다. 그런데 스캔을 진행하는 부분까지 만들고 테스트를 해보려고 하는데 어플은 정상 실행이 되는데 스캔 버튼을 클릭하면 어플이 강제종료 됩니다. 오류 내용은

E/BoostFramework: BoostFramework() : Exception_1 = java.lang.ClassNotFoundException: Didn't find class "com.qualcomm.qti.Performance" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib64, /vendor/lib64]]

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 15923
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.bluetooth.le.BluetoothLeScanner.startScan(java.util.List, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback)' on a null object reference
        at com.example.myapplication.MainActivity.startScan(MainActivity.java:182)
        at com.example.myapplication.MainActivity.lambda$onCreate$0$MainActivity(MainActivity.java:141)
        at com.example.myapplication.-$$Lambda$MainActivity$mssl4La-mhhX0ttBjD5v7QdktdI.onClick(lambda)
        

이렇게 나오는데 NullPointerException오류라고 검색을 계속 해보았는데 제 소스코드에서 어떻게 수정해서 에러를 잡아야할 지 막막해서 도움 요청 드립니다.

 

제 MainActivity 소스입니다. 여기가 오류가 발생하는 부분입니다. 

이 두부분에서 오류가 발생한다고 나오고 아래는 전체 소스는 첨부가 안되서  OnCreate 부분과 startScan부분 첨부합니다.

btn_scan_.setOnClickListener((v) -> {startScan(v); });
ble_scanner_.startScan(filters, settings, scan_cb_);
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    //// get instances of gui objects
    // status textview
    tv_status_= findViewById( R.id.tv_status );
    // read textview
    tv_read_= findViewById( R.id.tv_read );
    // scan button
    btn_scan_= findViewById( R.id.btn_scan );
    // stop button
    btn_stop_= findViewById( R.id.btn_stop );
    // send button
    btn_send_= findViewById( R.id.btn_send );
    // show button
    btn_show_= findViewById( R.id.btn_show );

    // ble manager
    BluetoothManager ble_manager;
    ble_manager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);
    // set ble adapter
    ble_adapter_ = ble_manager.getAdapter();

    btn_scan_.setOnClickListener((v) -> {startScan(v); });
}

//start scan
private void startScan(View v) {

    tv_status_.setText("Scanning...");

    // check ble adapter and ble enabled
    if(ble_adapter_ == null || !ble_adapter_.isEnabled()){
        requestEnableBLE();
        tv_status_.setText("Scanning Failed: ble not enabled");
        return;

    }

    //Set scanfilter
    //creat filter list
    List<ScanFilter> filters = new ArrayList<>();

    // create a scan filter with device mac address
    ScanFilter scan_filter = new ScanFilter.Builder().setDeviceAddress(MAC_ADDR).build();

    // add filter to list

    filters.add(scan_filter);

    //// scan settings
    // set low power scan mode
    ScanSettings settings= new ScanSettings.Builder().setScanMode( ScanSettings.SCAN_MODE_LOW_POWER ).build();

    // Scan callback
    scan_results_ = new HashMap<>();
    scan_cb_= new BLEScanCallback(scan_results_);

    //now ready to scan
    //start scan
    ble_scanner_.startScan(filters, settings, scan_cb_);
    //set scanning flag
    is_scanning_ = true;


}
seoyj409 (140 포인트) 님이 2019년 5월 26일 질문

2개의 답변

0 추천

로그캣을 읽어 보니깐 

startScan 부분에서 void 를 쓰셧는데 return 을 쓰셔서 죽는거같네요 

 java.lang.NullPointerException: Attempt to invoke virtual method 'void 
private void startScan(View v) {

    tv_status_.setText("Scanning...");

    // check ble adapter and ble enabled
    if(ble_adapter_ == null || !ble_adapter_.isEnabled()){
        requestEnableBLE();
        tv_status_.setText("Scanning Failed: ble not enabled");
        return;
kane9529 (1,110 포인트) 님이 2019년 5월 26일 답변
리턴 지워봤는데 똑같이 앱이 꺼집니다ㅠㅠ 다른 비슷한 에러들 보니까 NullPointerExceotion 에러라고 하시는데 해결방법을 모르겠네요 ㅠㅠ

btn_scan_.setOnClickListener((v) -> {startScan(v); });
이부분이랑

ble_scanner_.startScan(filters, settings, scan_cb_);
이부분에서 에러가 나는데 널값을 어떻게 처리해야될지..
0 추천
aucd29 (218,390 포인트) 님이 2019년 5월 27일 답변
감사합니다. 왜 이 중요한게 빠져있는건지 ㅋㅋㅋ; 덕분에 해결하고 갑니다.

ps. 두번째 답변 보시면 알 수 있습니다. 그게 답입니다.
안녕하세요, 같은 이유로 해결이 어려워서 답글답니다. 혹시 어떻게 해결하셨는지 해당 코드 알려주실 수 있나요? 부탁드립니다..!
...