블루투스에서 값을 받아서, AsyncTask를 이용해 받은 그 값을 전송하려고 합니다.
블루투스쪽에서 값을 받아서, MainActivity.onCharacteristicChanged(codeint); 로 codeint(받은값임)을 보내고
public static void onCharacteristicChanged(int value)
{
[생략]
else if (value == 31)
{
Message msg = mHandler.obtainMessage();
msg.what = MESSAGE31;
msg.obj = value;
mHandler.sendMessage(msg);
}
}
이런식으로 핸들러로 이동한 다음.
private final static Handler mHandler = new Handler()
{
public void handleMessage(Message msg)
{
switch (msg.what)
{
case MESSAGE31:
if(mContext!=null)
{
Toast.makeText(mContext, "값을 전송합니다.", Toast.LENGTH_SHORT).show();
send_push();
}
break;
}
}
};
이런식으로 send_push()함수로 접근합니다.
public static void send_push()
{
SendPostAsyncTask sendtask = new SendPostAsyncTask();
sendtask.execute();
}
모두다 static이다 보니, non-static인 SendPostAsyncTask에서 오류가 발생하네요.
static으로 동일하게 적용해야 한다고.... 그렇다고 위의 함수들에서 static을 제외하고 맨 처음 블루투스 값을
받는 부분에서 MainActivity.onCharacteristicChanged(codeint); 대신
new MainActivity.onCharacteristicChanged(codeint); 로 적용해보니 이것 역시 에러가 뜹니다.
Can't create handler inside thread that has not called Looper.prepare()
구글링해보니 스레드안에서 스레드를 사용했다는데....어떤식으로 변경해야하는지..;; 조언 부탁드립니다.
긴 글 읽어주셔서 감사합니다