앱인벤터 – 스크린이 넘어가도 블루투스 연결 유지시키기

전체 강좌 목록:
http://semicolon1.kr/appinventor.html

post_con_btsc_01.png

기본적으로 안드로이드 앱은 블루투스 연결중 스크린(액티비티)를 전환시 연결이 끊기게 됩니다.
이를 간접적으로 해결할 수 있는 방법이 두가지 있는데요,

ㆍ스크린 이동시 자동 재연결
ㆍ한 스크린 내에서 스크린 변경 한것 처럼 보이게 하기

사실 두번째꺼는 편법에 더 가깝답니다 🙂

post_con_btsc_02.PNG

이게 블루투스 연결하는 거죠!


스크린 이동시 자동 재연결

이건 먼저 Screen1에서 블루투스가 연결이 된 상태고, Screen2로 넘어가려할때, 연결된 주소값을 Screen2로 보내 Screen2에서 그걸로 재연결 하는 것 입니다.

잠시 끊기기는 하지만 어쩔수 없어요.
만약 절대 끊겨서는 안된다면 두번째 편법을 써야 합니다.

이건 간단하게 로직만 보겠습니다.
첨부파일에 프로젝트 파일도 올려두겠습니다.

예제 파일 다운로드…

post_con_btsc_03.PNG

일단 위 블록중 왼쪽은 블루투스 연결 리스트 갱신과 에러 처리 부분이니 신경 안쓰셔도 되고요,

post_con_btsc_04.PNG

이 부분만 봅시다. 원리는 간단합니다.
주소 리스트 클릭시 그 주소로 연결을 시도 합니다.
그리고, Screen2로 이동시 시작값으로 그 주소를 보내며 엽니다.

참고로 이때, 연결 성공하면 그 주소를 변수에 담아두고 시작값으로 그 변수값을 보내는게 더 좋겠죠?

post_con_btsc_05.PNG

마찬가지로 윗블록만 봅시다.
Screen2가 열리며 자동으로 시작값으로 넘어온 주소로 연결합니다.

제가 해보니 1초도 안걸리더라고요(물론 차이 있을 수 있음)

스크린 이동하는것 처럼 속이기(편법)

블루투스는 스크린 이동시에만 끊기지, 한 스크린 내에서는 직접 끊지 않는 이상 안끊긴다 했습니다.

이를 이용해 한 스크린 내에서 여러스크린인것 처럼 구현해 봅시다.

예제 파일 다운로드…

post_con_btsc_06.PNG

먼저 수직 배치를 하나 두고
너비 높이 모두 부모에 맞춤으로 해서 꽉 채웁니다.

글쓰다 생각 났는데 생각해보니 이건 필수는 아니네요. 단지 보기좋게 묶는 역할일 뿐.

post_con_btsc_07.PNG

그리고 스크린 역할을 할 레이아웃을 추가합니다.
스크린은 기본 수직 배치니 우리도 수직 배치를 넣읍시다.

post_con_btsc_08.PNG

이제 감이 오나요?
이렇게 추가한 두개의 수직 배치가 각각 Screen1, Screen2… 식으로 됩니다.
개수는 자유.

post_con_btsc_09.PNG

각 수직배치의 이름도 구분이 쉽게 바꾸고,
스크린 이동 버튼도 만듭니다.

post_con_btsc_10.PNG

이제, 두 스크린의 너비 높이를 부모에 맞춤으로 하고,

post_con_btsc_11.PNG

기본으로 보일 Screen1 레이아웃을 제외한 나머지 레이아웃의 보이기를 모두 해제!
이제 Screen1 레이아웃만 보이네요.​

post_con_btsc_12.PNG

마지막으로 이렇게 스크린 역할을 하는 레이아웃들의 보이기 값을 조절해 한 스크린 내에서도 여러 스크린인것 처럼 연출이 가능합니다!

감사합니다.

댓글

Copied title and URL