안드로이드 무료 노래방 어플인

"내 손안에 노래방" 을 런칭 했습니다.


내가 주로 이용하는 노래방 회사인

금영, 태진 을 선택해서 저장할수 있습니다.


설정된 나의 노래방 회사에 맞춰서

최신 인기곡을 만나보실수 있습니다.


신곡이 나올때마다 바로 바로 업데이트 됩니다.


검색 기능을 이용하면

거의 모든 노래를 검색해서 찾아볼수 있습니다.


꾹!!!! 누르고 있으면 즐겨찾기에 추가할수 있습니다.

즐겨찾기 항목에서 꾹!!! 누르면 즐겨찾기에서 삭제할수도 있습니다.


노래방 화면은 와이드로!!!!!

넓은 화면으로 노래방 화면을 감상하며, 

노래를 따라 부를수 있어요 ^^


스토어 [바로가기]





  1. 멜로요우 2015.09.15 20:00 신고

    이런 어플도있네요 티비에 연결해서 보게되면 정말 노래방같을거같아요

  2. 생명마루한의원 2015.09.16 00:51 신고

    잘봤어요~

  3. *저녁노을* 2015.09.16 05:27 신고

    ㅎㅎ이런 어플도 있군요.
    잘 알고 갑니다.

  4. 행복생활 2015.09.16 08:52 신고

    요거 받아두면 좋겠는데요 ㅎㅎ

  5. 『방쌤』 2015.09.16 11:10 신고

    혼자 놀기의 끝판대장 격인데요~^^
    재미있는 어플들이 참 많은것 같아요~

  6. 로키. 2015.09.16 13:35 신고

    이거 왠지 재밌어 보이네요

  7. 헬로끙이 2015.09.16 15:53 신고

    오 노래방 가는거 좋아하는데 요즘은 잘 갈일이 없더라구요
    어플이라니 신기하네요 ^^

  8. 뉴론♥ 2015.09.17 06:07 신고

    심심할때 가지고 놀기는 좋겠어여 어플 정보를 제공하시는가 보네여 잘보고갑니다.

  9. 행복생활 2015.09.18 12:21 신고

    좋은데요 ^^ 잘 알아 갑니다~

배경 이미지를 용량 때문에 작게 만들어서 크게 늘려서 쓰고 싶었습니다. 



bg3 = new CCSprite().sprite("img/bk0.png");

bg3.setAnchorPoint(ccp_a(0, 0));

bg3.setPosition(ccp_p(0, 0));


CGSize tTargetSize = CGSize.make( GAME_WIDTH, GAME_HEIGHT);

CGSize tSizeOrig = bg3.getContentSize();

bg3.setScaleX(( tTargetSize.width / tSizeOrig.width ));

bg3.setScaleY(( tTargetSize.height / tSizeOrig.height ));

addChild(bg3);



빨간 부분을 추가 하시면 됩니다. 


작은 크기의 이미지를 Game Width, Game Height 크기 만큼 늘렸습니다. 


별다른 무늬가 없는 하늘 배경이라 위와같이 늘려서 썼습니다. 






웹뷰 자체에 배경색을 변경하여도 어짜피 웹에서 내용을 다운받으면 웹의 설정대로 색이 적용됩니다. 


웹에서 전달 받은 값 자체를 검은색으로 변경해주어야 합니다. 



 

mWeb.loadDataWithBaseURL("", "<body bgcolor='000000' />", "text/html", "utf-8", "");

 

이런식으로 전달받은 웹의 태그의 백그라운드 색을 바꿔주면 


웹뷰의 배경색을 변경할수 있습니다. 







마켓에 등록용 apk를 Export 중!


위와같이 에러가 발생하면, Buid-tools 의 문제입니다. 


Android SDK Manager 을 실행후 

Android SDK Build-tools 을 설치하거나 최신 버전이 아니시면 최신버전으로 업데이트 하시면 됩니다. 




그후에 이클립스를 꼭 재시작 해주세요. 


이클립스 재시작후 다시 Export 하시면 정상적으로 진행됩니다. 












드디어 


 Selector battle with WIXOSS 이 일본에서 안드로이드만 먼저 오픈했습니다. 



일본 마켓 주소는 https://play.google.com/store/apps/details?id=jp.co.skylink.selector.game 입니다. 


selector battle with WIXOSS 공식 사이트 : http://selector-app.com/


ㅋㅋㅋ



좀더 빡시게 해서 곧 애플도 출시합니다. 






  1. 드래곤포토 2015.04.07 22:24 신고

    잘알고 갑니다.
    편안한 저녁 되세요 ^^

  2. G.J. 제이 2015.04.11 17:53 신고

    앗? 적샷굿샷님이 만든 게임인가요? 신기하네요!!



요즘 걸그룹 뮤직보디오 보는 재미에 빠져서 

유투브에서 뮤비를 다 다운 받아서 폰에 넣었습니다. 



그런데 '-';;;; 문제가 생겼어요


기존의 동영상 플레이어는 영화나 드라마를 보기에 적합해서 

폴더 통째 플레이와 랜덤 플레이가 없더군요 



뮤비가 있는 폴더만 재생하고 랜덤하게 섞어서 재생해줬으면 좋겠는데 

하는 마음에 검색 ㄱㄱ 합니다. 


네이버엔 없습니다. 구글로 가서 영어로 검색 ㄱㄱ 합니다. 



저와 비슷한 질문을 올려둔 사람이 있군요


질문입니다.



답변이구요.




1)MX Player
2)Mobo Player pro
3)mVideo Player
4)ooVoo Player
5)Kascend Video Player
6)Easy Video Player
and many more....


그중에 저는 MX 플레이어를 선택했습니다. 




플레이 화면에서 메뉴 클릭후 재생옵션



위에 전체 반복과 셔플 체크



이렇게 하면 랜덤 재생이 가능합니다 ^ㅡ^












IOS의 경우는 결제받은 영수증을 가지고 서버에서 IOS 인앱 서버로 

유효한 영수증인지 확인 요청을해 해킹 여부를 판단할수 있습니다. 



안드로이드에선 별도로 유효 영수증인지 확인해주는 서버가 없으미로


결제후 영수증 데이터와 Base64로 암호화된 영수증 데이터 둘을 게임 서버로 보내 

Base64 Decode를 한후 두 영수증이 동일한지 체크하여 해킹을 막을수 있습니다.



아래는 게임서버쪽 영수증 체크 코드 입니다.



  1 
  2 import java.security.KeyFactory;
  3 import java.security.PublicKey;
  4 import java.security.Signature;
  5 import java.security.spec.X509EncodedKeySpec;
  6  
  7 String receiptData = "영수증데이터"; 
  8 String receiptEncodeData = "암호화된 영수증데이터";
  9 String publicKeyStr = "퍼블릭키";
 10  
 11 PublicKey publicKey = null;
 12 byte[] decodeKey = Base64.decodeBase64(publicKeyStr);
 13 KeyFactory keyFactory = KeyFactory.getInstance("RSA");
 14 publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(decodeKey));
 15  
 16 Signature sig;
 17 sig = Signature.getInstance("SHA1withRSA");
 18 sig.initVerify(publicKey);
 19 sig.update(receiptData.getBytes());
 20 if(!sig.verify(Base64.decodeBase64(receiptEncodeData))){
 21  //영수증검증실패
 22 }else{
 23 //영수증검증성공
 24 }






GridView 를 이용해서 표비슷한 놈을 만들었는데 예제는 position 을 이용하여 표안에 값들을 채우게 되어있었습니다. 


position 을 이용해 각각 다른 배열에 있는놈을 % 연산으로 지지고 복고 해서 빼곡히 채워넣긴 했는데 문제가 생겼습니다. 



스크롤을 최대 아래로 내렸다가 최대 위로 올리면 position 이 0번지를 찾지 못하고 한없이 위로 올라가네요. '-' ;;;;;;;



이래 저래 가지고 놀다가 해법을 찾았습니다. XML에서 GridView 를 선언할때 


android:layout_width="match_parent"

android:layout_height="wrap_content"



위와 같이 설정하면 제대로 position 0번지를 찾고 위아래로 정상적으로 멈추네요 







오늘 소개해드릴 앱은 스마트폰으로 배달음식을 주문할수 있는 "요기요" 입니다. 

현재 안드로이드와 IOS 버전이 모두 나와 있으며, 홈페이지를 통해서도 주문이 가능합니다. 


전 안드로이드 유저니 안드로이드 기준으로 소개드리겠습니다. ^^




구글 플레이스토어에 접속후 "요기요" 를 검색하면 쉽게 찾을수 있습니다. 




설치 완료후 실행을 하면 위와같은 첫화면을 볼수 있습니다. 

GPS를 통한 위치기반 서비스를 제공하는 앱은 모두다 저런식의 동의를 받아야만 합니다. 


동의하기를 선택하면 메인 화면이 보입니다.



현재 위치를 보여주며 배달 지역을 검색할것인지 물어봅니다. 

저는 실내에서 앱을 실행했기에 현재 위치가 맞지 않아 아니오를 눌렀습니다.


퇴근길에 마지막으로 봉덕동을 지나왔는데 그때의 위치가 반영된것 같습니다. 




제가 사는곳은 봉덕동 옆 두산동입니다. 

두산동을 검색후 설정했습니다. 




닭이라면 먹어서 없애버려야 한다는 신념으로 지금껏 먹어 없애온 닭이 어마 어마 합니다 ^^

역시나 제일먼저 손이가는 카테고리가 치킨 카테고리 입니다. 


그리고 그중에도 요즘 꽂혀있는 대구 통닭이 눈에 보이네요. 



대구 통닭의 최고 메뉴인 마늘반 매운양념반을 선택했습니다.

친절하게 콜라 옵션도 같이 뜨네요 ^ㅡ^


콜라는 다음기회로 미루고 주문표에 추가를 누릅니다. 



주문표에 알차게 들어가 있네요.

주문내역을 확인하고 주문하기를 선택하면 결제창으로 넘어갑니다. 



결제는 주문시 하는것이 아니고 현장결제로 됩니다. 

결제수단을 선택하고 주문완료!!! 


이제 기다렸다가 배달이 오면 현금을 드리면 됩니다. 


매번 전화해서 주소 설명 하기보단 앞서가는 스마트한 스마트폰 유저가 되어보는것도 괜찮을것 같네요. 


언젠간 모든 주문을 앱으로 하는 시대가 오겠죠.


IOS 앱스토어 요기요!

http://itunes.apple.com/us/app/baedal-eumsigjumun-yogiyo/id543831532?ls=1&mt=8


 

구글플레이스토어 요기요!

https://play.google.com/store/apps/details?id=com.fineapp.yogiyo&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5maW5lYXBwLnlvZ2l5byJd



아참 그리고 서두에 홈페이지를 통해서도 주문이 가능하다고 말씀드렸죠. 

아래 링크로 거서 주문하셔도 됩니다. 


요기요 홈페이지 : http://www.yogiyo.co.kr/






  1. 2013.03.13 15:52

    비밀댓글입니다



안드로이드 앱을 개발하는 궁극적인 목적!


그것은 바로 수익 창출이 아닐까 합니다. 


현재 많은 개발자들은 광고를 통해서 수익을 창출 하지만 


인앱을 통해서 수익을 창출 하려면 구글이 제공하는 인앱 소스를 사용해야만 합니다. 


onPurchaseStateChange() 함수를 통해서 정상 결재 여부를 판단하게 되는데요


이놈이 호출이 되지 않거나 간혈적으로 호출되는 문제가 있습니다. 


주로 여러번 결재 시도를 하다보면 자주 발생하게 됩니다. 


http://stackoverflow.com 에서 해결책을 찾았습니다. 



출처 : http://stackoverflow.com/questions/12844132/onpurchasestatechange-not-getting-called


onstart() 에서 호출된 녀석을 re-start 할때 제대로 remove를 하지 않아서 발생한다는 내용입니다. 

그래서 해결책은 



protected void onStop() {
        super.onStop();

        ResponseHandler.unregister(YOUR_PURCHASE_OBSERVER);
    }


onStop() 안에서 unregister 을 호출해서 문제를 해결하면 됩니다. 



저희 앱에서는 pause 안에 해당 unregister 가 존재했지만 같은 현상이 계속 나타났습니다. 

이놈을 onDestroy로 옮기니 문제가 해결 되었습니다. 










아래 손가락을 꾹 눌러 주세요

  1. 초짜개발자 2013.01.03 17:18

    저도 같은 현상때문에 여기까지 왔네요.
    링크글을 읽어보니 onstop 에서의 내용을
    onDestroy 로 옮기라는 내용아닌가요? ;;
    onstop 에서 옵저버를 null 로 만드니까요.
    null 일 때 queue 로 처리하라는 두번째 해결책은
    제가 개발력이 부족해서 어떻게 해야되는지 모르겠네요 ㅎ

+ Recent posts