<안드로이드 웨어러블 와치 코딩 맛보기>
android wearable watch
이번에는 시계(와치)의 추가 기능 들을 살펴보도록 하겠습니다.
이번 포스팅 순서
--------------------------------------------
버전 설정 변경
Confirmation 성공, 실패, 어플 오픈
음성인식 결과 받기
스와이프 종료 막고 롱탭으로 종료 버튼 노출
지연확인뷰 (로딩이미지)
블루투스가 아닌 구글 서비스를 통한 앱과 웨어러블 통신
-------------------------------------------
1. 버전 설정 변경
blank wear activity -> comfirmation activity 생성
app build.gradle 앱 버전관리
android:theme="@android:style/Theme.DeviceDefault" > 에러
app build.gradle 에서 힙메모리 부족으로 23 마시멜로우 -> 22로 변경
compileSdkVersion 22
buildToolsVersion "22.0.1"
dependencise {
1.0.0
6.5.87
}
setContentView(R.layout.round_activity_confrimation1); round layout 에서 코딩해주면 round 로 변경해줘야 함
//하나는 내가 정의한 클래스, 하나는 제공해주는 클래스
Intent i = new Intent(Confrimation1Activity.this, ConfirmationActivity.class);
//확인 액티비티의 애니메이션 타입
i.putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, ConfirmationActivity.SUCCESS_ANIMATION);
i.putExtra(ConfirmationActivity.EXTRA_MESSAGE, "--- Success!! ---");
startActivity(i);
}
옵션 사용
FAILURE_ANIMATION
OPEN_ON_PHONE_ANIMATION
3. 음성 인식 결과 받기
Blank wear activity -> WearVoiceActivity 생성
보이스 버튼이 눌렸을 때
voiceBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//음성인식 페이지로 자동으로 넘김
Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
//음성인식 페이지에 적용할 속성
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
//이동했던 엑티비티에서 결과를 가지고 돌아와라
//돌아 올때는 onActivityResult() 로 돌아감
startActivityForResult(i, VOICE_REQUEST_CODE);
}
});
음성 인식이 완료된 후 자동으로 호출되는 메서드
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//VOICE_REQUEST_CODE 코드를 가지고 음성인지, 카메라인지, 어디서 왔는지 구분해주는 값
//resultCode : 엑티비티정상 종료 여부
//data : 이동 했던 페이지에서 처리했던 결과
//리퀘스트 코드 구분 및 성공여부 확인
if(requestCode==VOICE_REQUEST_CODE && resultCode == RESULT_OK){
//음성인식 페이지에서 넘겨준 결과를 받음
List<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
//음성인식 된 결과는 한가지만 있으면 되므로, 리스트에서 첫번째 결과값을 가져오면 된다.
String text = result.get(0);
//결과를 테스트뷰에 적용
mTextView.setText(text);
}
}
<resources>
<style name="NoSwipeDismiss"
parent="@android:style/Theme.DeviceDefault">
<!--프로젝트 안에 전부 스와이프 종료가 막힘-->
<item name="android:windowSwipeToDismiss">false</item>
</style>
</resources>
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return super.dispatchTouchEvent(ev)
|| mGesture.onTouchEvent(ev);
//기본 짧은 터치 || mgesture 의 롱 터치도 감지 시킴;
}
//화면 롱클릭 감지자
class LongPressListener extends GestureDetector.SimpleOnGestureListener{
@Override
public void onLongPress(MotionEvent e){
dismissOverlay.show();
}
}
5. 지연확인뷰 (로딩 이미지)
원형 이미지를 사용하기 위한 세팅
activity_circled_image.xml
xmlns:app="http://schemas.android.com/apk/res-auto"
round_activity_circled_image.xml
<android.support.wearable.view.CircledImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
app:circle_color="#0000ff"
app:circle_radius="60dp"
android:padding="5dp"
app:circle_border_width="10dp"
app:circle_border_color="#ffffff"/>
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.round_activity_circled_image);
timerBtn = (Button)findViewById(R.id.timerBtn);
delayImg = (DelayedConfirmationView)findViewById(R.id.delayImg);
delayImg.setTotalTimeMs(3000); //3초간 지연
timerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//지연뷰 시작
delayImg.start();
}
});
//지연부에 이벤트 감지자 등록
delayImg.setListener(new DelayedConfirmationView.DelayedConfirmationListener() {
@Override
public void onTimerFinished(View view) {
//지연이 완료된 후 호출
Toast.makeText(CircledImageActivity.this, "finish", Toast.LENGTH_SHORT).show();
}
@Override
public void onTimerSelected(View view) {
//지연뷰를 클릭했을 때 호출
delayImg.clearFocus();
}
});
}
'코딩맛보기' 카테고리의 다른 글
안드로이드 웨어러블 와치 코딩 맛보기 2/3 (0) | 2015.10.08 |
---|---|
안드로이드 웨어러블 와치 코딩 맛보기 1/3 (0) | 2015.10.04 |