Skip to content

x3rocode/SilverTube

Repository files navigation

SilverTube

이 프로젝트는 [황반변성](https://namu.wiki/w/%ED%99%A9%EB%B0%98%EB%B3%80%EC%84%B1) 을 앓고 계신 외할머니를 위해 만들었습니다. 책 읽어주는 유튜브를 즐겨 들으시는데, 눈이 거의 안보이셔서 유튜브앱 실행이나 검색은 물론 play/pause 버튼 터치조차도 버거워하십니다. 그래서 할머니가 자주 사용할 기능을 최대한 크게! 잘보이게! 쉽게! 만드는것을 목표로 잡았습니다.

Feature

위젯

위젯에 버튼을 만들어서 앱 실행을 할 필요조차 없게끔 만들었습니다. 그냥 앱에다가 구현하면 편했겠지만 분명 뭐 잘못누르시다가 앱 꺼지면 다시 못켜실게 뻔했거든요..

할머니가 쓸 기능

위젯에 다음 기능들을 버튼으로 만들어 화면 꽉곽 채워 배치했습니다.

  • 시작
  • 멈춤
  • 이전
  • 다음
  • 작게
  • 크게

그리고 할머니의 시야를 분석(?)하여 최대한 이 6개의 버튼들을 쉽게 구분할수 있게끔 하려고 노력했습니다. 황반변성은 단순히 시력이 낮아지는게 아니라

위와 같이 시야가 왜곡되어 보이거나 알수없는 색카만 무언가로 가려져 안보이거나 어둡게 보인다고 합니다. 할머니는 시야는 다음과 같은 상황입니다.
  • 버튼 사이 간격이 좁으면 버튼이 하나로 뭉개져 보임(: 버튼 크기를 무조건 키우는게 답이 아니였다)
  • 무조건 보색이라고해서 잘보이는게 아님. 채도가 비슷한 색들은 다 비슷해보임. 예를 들면

    위 사진의 녹색과 적색 구분이 어렵다고 함(: 글씨와 버튼을 보색으로 사용하거나, 무조건 쨍한 색을 사용하는것도 답이 아니였따)

색 배치는 아직도 실험중에 있습니다. 여러 색 배치하여 데모를 뽑아가서 할머니께 가장 잘보이는 색 여쭤보는 과정을 좀 여러번 거쳐야 할 것 같아요. 예쁜색을 뽑는거보다 할머니가 잘 볼수 있는 색을 고르는게 더 어려웠던것 같아요.

엄마나 내가 쓸 기능

엄마는 매일 할머니댁에 들르시는데, 그때마다 플레이리스트를 업데이트해주는 방식입니다. 할머니가 유튜브에서 볼 영상 검색을 못하셔서, 적당한 영상들을 미리 추가해놓는 방식입니다. 영상을 추가하는 방식은 총 세가지입니다.

  • 영상 한개 추가
  • 채널의 모든 영상 추가
  • 재생목록 추가
  • 리스트에서 선택 재생도 가능해요!

모두 링크 공유버튼을 눌러 URL을 앱에 붙혀넣는 방식으로 추가됩니다. 추가 후에는 리스크에 현재 재생목록이 업데이트됩니다. 리스트에서 영상을 삭제할 수 있고 전체삭제도 할 수 있습니다.

Used technologies

Background task, Service

배터리 관리 문제 등으로 OS자체에서 앱을 종료해버리면 위젯이 동작하지 않았습니다. 유튜브 플레이어가 context를 인자로 받기 때문인 것 같았습니다. 그래서 Service를 추가하여 앱이 Background에서 계속 상주하도록 했습니다.

Shared preferences

앱과 위젯을 완전히 분리시키기 위해 Youtube Player View를 Activity에 종속되지 않게끔 했습니다. 플레이리스트에 영상을 추가하면 Shared preferences를 사용하여 내부 저장소에 바로 저장합니다. 위젯쪽에서 영상을 재생할 때 영상들에 대한 정보를 앱이 아닌 내부저장소에서 바로 가져오기 때문에, 앱 UI가 종료되어도 재생목록을 받아올 수 있습니다. SettingYoutube라는 Singleton 클래스를 만들어서 Activity든 Widget이든 이 인스턴스를 사용하도록 했습니다.

Youtube API

유튜브에서 제공하는 공식 API를 사용했습니다. 로그인 OAuth2때문에 꽤나 어려움을 겪었지만 어찌저찌 했습니다. 아래의 오픈소스를 사용하면 로그인 없이도 영상들을 불러올수 있는데 굳이 로그인을 넣은 이유는 광고 제거를 위해 유튜브 프리미엄을 사용해야했기 때문입니다. 또한 처음엔 앱 내부에 플레이리스트를 만들지 않고 유튜브 계정의 재생목록을 불러오는 방식으로 구현하려 했었기 때문에 나의 재생목록을 가져오기 위해 로그인을 구현했습니다.

최고의 플레이어!

Retrofit

네트워킹

TODO

터치를 물리버튼으로 변경하기

터치보다는 만져서 알수있는게 훨씬 구분하기 편할것 같다. 예전에 커스텀 키보드 찾다가 봤었던 **매크로키보드**가 번뜩 생각이 났다!! 바로 주문했고 배송오는중이다. Android OS랑 호환이 되는진 모르겠는데, 블루투스 방식으로 키입력 인식해서 연결해둔 펑션만 호출해주면 되지 않을까?!? 그럼 위젯을 빼고 서비스에 블루투스 자동연결과, 끊어지지 않게끔 하는 코드를 넣으면 될 것 같다. 저 다이얼 돌려서 음량조절하는건 꼭 넣을것이다.

플레이리스트 자동 업데이트

생각보다 할머니가 유튜브를 자주 들으신다고 한다. 책 읽어주는 채널들의 영상을 거의다 시청했을거라고 했다. 영상 선택이나 검색은 못하시고 들은거 계속 또듣고 한다는데, 새 영상이 업로드되면 바로 플레이리스트에 넣고, 다들은건 플레이리스트에서 자동으로 삭제하는 기능도 넣어볼까 한다. 근데 들었던거 또듣고싶으면 어쩌지..? 흠 ( 이건 매크로키보드 남는 버튼으로 ㄴ따봉ㄱ키를 만들어서 할머니만의 플레이리스트를 따로 만들어둘까 한다.. 고민 좀 해봐야할듯. ) 아무튼 새영상 자동 추가 기능은 매일 정해진 시간에 구독해둔 채널의 가장 최근영상의 제목을 가져와서 전날의 것과 비교한 후 내부저장소에 저장해두면 될 것 같다.

로딩 중 표시

당연한 말이지만 새 영상을 불러올땐 시간이 좀 걸린다. 하지만 할머니가 성격이 급해가지고 다음 영상 바로 안나온다고 버튼 여러번 누르고 그럴 것 같다. 다음 영상 불러오기 전까지 버튼을 Block처리해놔도 되겠지만.. 처리중일때 버튼 색이 바뀐다던지, Progress bar같은걸 추가하던지 해야할 것 같다. 물리버튼으로 변경하면... 방법이 없긴 한데 좀 생각해봐야 할 듯. 저 버튼이 블루투스 모델은 RGB가 안되더라ㅠ 시모록..

코드 정리

좀 해라

끝없는 여정..

11.07

매크로 키보드 배송 도착했다. 시도해봐야할 것들로는

  1. 안드에 space키 눌림 신호 줬을때 유튭 멈춤/재생 작동하는지?
  2. 무선충전 리시버를 구매했다. 근데 핸드폰이 아니라서 충전단자부분이 아래쪽이아니라 옆쪽에 달려서,, 케이스 제대로 끼고도 작동하려면 약간의 개조가 필요할듯.
  3. 만약 1번이 안되면 .. 키 눌렸을때 키코드값 구할수 있나..? 안드가..?
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {

    switch (keyCode) {
        case KeyEvent.KEYCODE_A:
        {
            //your Action code
            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

된다고 한다. 하드웨어면 상관없이 되는듯. 이러면 1번이 불가능하면 그냥 키코드 암거나 주고 케이스주면 되겠다. 야호!

완성..?

11.12

매크로 키보드는 키 입력 프로그램을 제공해주고 있었다. 게다가 음량조절, 플레이리스트 이전/다음 버튼도 이미 구현되어 있었다.
내 프로그램은 쓸모없어졌다.. 하지만 할머니가 편하게 쓸 수 있다면 그걸로 만족한다.
사용하지 않는 키는 키캡과 핫스왑 방식의 스위치를 제거해서 할머니가 다른 키와 혼동하지 않도록 했다.

사용기

처음엔 이런식으로 키를 구성했고, 할머니께 사용법을 알려드렸다. image

: 조금 써보시는 듯 하더니 어렵다고 하신다. 굉장히 충격적이였고 난감했다. 키도 5개밖에 되지 않아서 사용하기 아주 쉬울거라고 생각한것은 내 잘못된 판단이였다.

그래서 사용하는 키를 줄여 이렇게 바꿔드렸다. image

: 이러면 사용하는 키가 총 3개밖에 되지 않아 정말 간단하다고 생각했다. 할머니도 어느정도 써보시더니 조금 할만 하다고 하셨다. 할머니가 익숙해져서 편하게 사용했으면 했는데, 빠른 시일 내에는 불가능 할 것 같다는 생각이 들었다.

충전기

무선충전이 올려놓기만 하면 되니까 더 편할거라고 생각해서 무선충전 리시버를 구매했는데, 무선충전기에 정확히 올려놓지 않으면 충전이 되지 않았다.

image

매크로 키보드에 스피커가 내장되어있지 않아서.. 충전이 잘 되고 있는지 확인하기 어려웠다. (충전중엔 초록 불이 들어오는데, 할머니는 이걸 못보실것이 분명했다..)

image

그래서 자석 충전기를 구입해, 커넥터는 항상 매크로 키보드에 꼽아 두고 사용시에 케이블만 떼어내 사용하도록 했다. 다시 충전할때는 자석이라 근처만 가도 붙으며 충전이 되니, 할머니가 직접 선을 꼽을 필요가 없기 때문이다. (할머니가 매크로 키보드 충전단자부분을 찾기 어려워했기 때문)



결론

안쓰신다.

이거스로 나의 노력은 물거픔이 되었다...
문제점으로는 이런것들이 있다.

  1. 새로운것을 배우는 것 자체가 부담이 된다고 함.
  2. 블루투스제품이라 충전기에서 분리 후 연결될때까지 약 5~10초정도 기다려야 하는데, 그걸 못기다리신다. (답답하대)
  3. 그냥 원래 쓰던게 더 편하다고 함.(왜?????왜?????????????? 이건 고작 버튼 세개 누르면 되는데??????????)

느낀점

할머니가 더 편하게 쓰셨으면 하는 마음에 시작한 프로젝트였는데..
나는 엄청 쉽다고 생각해도 할머니입장에선 아닐 수 있다는걸 알았다.
사람마다 기준이 다른건 알고 있었지만..
그리고 중요한건 할머니가 뭔가 새로운걸 배우려고 하지 않는다. 새로운걸 받아들이기를 거부한다.
조금만 익히면 이게 더 편한데.. 그 익히는게 힘들다고 한다.
할머니한테는 새로 배워서 쉽게 쓰는것보다, 불편하더라도 이미 익숙해진 것을 쓰는게 더 쉬운 모양이다.

할머니의 눈높이에 맞춰서, 진짜 할머니 입장에서.. 다시 생각해 봐야겠다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages