2015년 2월 26일 목요일

편리한 하이브리드앱 개발 라이브러리

agate를 소개합니다.

applusform.com

한국어로도 지원됩니다.

샘플들 많이있고요.

여기 pdf 다운모두 받으셔서 한번 읽어 보시고

모르겠으면 그냥 설치 가이드만 한번 보시고 따라하기하시고.

샘플 소스 실행시켜서 원하는 부분만 짜집기해도 괜찮은 앱 뚝딱 합니다.

기능대 개발 시간  가성비가 정말 높네요.

또한 화면움직임이 이나 효과가 좋습니다.

개념잡기도 편하고요..

초보자도 따라하기 편합니다.

적극추천합니다.

추후 어플 개발 되는거나 소스에 대해서 공유해보겠습니다.

2015년 2월 11일 수요일

안드로이드] WebView에서 동영상, 전화걸기, 이메일보내기, 기본 페이지 이동 가려내기

안드로이드 모바일에서 이미 개발된 모바일 웹을 웹뷰로 띄워야 할 때가 있습니다. 

기본 모바일 웹 페이지만 띄우는 작업이면 상관이없는데 

 이 모바일 페이지에서 전화를 건다거나 동영상을 재생한다면 안드로이드는 동작을 안하게되죠 

지금 떠있는 것은 웹뷰이고 웹뷰는 동영상이나 전화거는 뷰가 아니기때문입니다. 

그래서 url을 가지고 동영상, 전화, 메일등을 가려내 해당 뷰로 넘겨주어 

 굳이 모바일 웹쪽을 수정하지않아도 앱단에서 해결 할 수 있는 방법입니다.
 
 private class HelloWebViewClient extends WebViewClient {
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
   String origin_url = url;
   String temp_url = origin_url.substring(origin_url.length() - 3,
     origin_url.length());

   if (temp_url.equals("mp4")) {
    
    // 동영상 플레이어로 재생하기 
    
    Intent i = new Intent(Intent.ACTION_VIEW);
    Uri uri = Uri.parse(url);
    i.setDataAndType(uri, "video/mp4");
    startActivity(i);
   } else if (origin_url.startsWith("tel:")) {

    // 전화 걸기 

    Intent call_phone = new Intent(Intent.ACTION_VIEW,
      Uri.parse(origin_url));
    // 현재의 activity 에 대해 startActivity 호출
    startActivity(call_phone);
    return true;

   } else if (origin_url.startsWith("mailto:")) {
    
    // 이메일 보내기 
    
    String email = origin_url.replace("mailto:", "");
    final Intent intent = new Intent(
      android.content.Intent.ACTION_SEND);
    intent.setType("plain/text");
    intent.putExtra(android.content.Intent.EXTRA_EMAIL,
      new String[] { email });
    intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "제목");
    intent.putExtra(android.content.Intent.EXTRA_TEXT, "내용");
    startActivity(Intent.createChooser(intent, "이메일 전송"));

   } else {
    
    // 기본 웹 페이지 넘어가기 
    
    view.loadUrl(url);
   }

   return true;
  }
 }


(2012 10 14 에 내용 추가 )

http://가 아닌 rtsp://로 시작하는 mp4 영상파일은 위 방법으로 재생이 되지않습니다. 
 
if (temp_url.endsWith("mp4")) {
    // 동영상 플레이어로 재생하기
    try {
     Intent i = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
     startActivity(i);
    } catch (URISyntaxException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }

이런 식으로 타입지정하는  i.setDataAndType(uri, "video/mp4"); 이부분을 빼주셔야 재생이 됩니다.




추가로 띄우는 웹 페이지의 크기가 클 때 전체화면에 딱 차게 뜨는 코드도 추가합니다.
 
mWebView = (WebView) findViewById(R.id.MainWebview);
  mWebView.getSettings().setJavaScriptEnabled(true);

  // 웹뷰에 줌 달기
  mWebView.getSettings().setBuiltInZoomControls(true);

  // 웹뷰에 딱맞게 페이지 크기조절
  final WebSettings webSetting = mWebView.getSettings();
  webSetting.setLoadWithOverviewMode(true);
  webSetting.setUseWideViewPort(true);

  mWebView.loadUrl("http://www.naver.com");
  mWebView.setWebViewClient(new HelloWebViewClient());