레이블이 Android인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Android인 게시물을 표시합니다. 모든 게시물 표시

2015년 2월 11일 수요일

Android Push Server_ Step1.AWS 계정생성 및 AWS EC2 Instance 생성.


Explain.
 - 이번에 푸쉬서버 구현 진행중 AWS 회원가입시 FreeTier 권한으로 1년간 무료로 AWS를 사용할수있는점을 발견해서 진행. 자세한내용은 AWS 홈페이지 참고. 한글어도 일부 지원하는것으로 보이고 계속 번역 진행중인것으로 보여짐.(굿)
 - 회원가입의경우 한글어로 폼을 지원하기때문에 따로 정리하지는 않았습니다.


1.회원가입후 로그인시 볼수있는 AWS서비스 화면
EC2를 활용하여 서버구현을 진행할것이므로 EC2를 선택한다.

2. 그후 인스턴스를 추가해야되기때문에 좌측에 인스턴스 클릭.

3. 현재 실행중인 인스턴스들을 보여주는 창이나오는데
상단의 Launch Instance를 선택

4. OS 선택. Amazon Linux를 선택하여 진행.(다른운영체제를 선택하셔도 무방합니다.)

5. Instance type을 선택하는 부분인데 free tier용 타입(t2.micro) 선택
후 Next

6. 이후 서버관련 셋팅(과금과 관련된 부분은 안건드시는게 좋습니다.^^;)
딱히 따로 셋팅이 필요없으신분은
디폴트로 놔두시고 Launch 하셔도 무방합니다.

여기까지 진행하신경우 3번의 화면에서 생성된 인스턴스의 상태와 정보를 볼수있습니다.
다음포스팅에서는 AWS에 LAMP 환경 구축하는것을 진행.

2014년 9월 3일 수요일

Android_Intent 형식으로 미디어 파일 재생하기.

Explain.
친숙한 방식인 Intent형식으로
미디어파일을 재생하기.
간단한 방법이므로 따로 설명은 생략.

Code.
public void OpenMediaFile(String path)
{
 Intent intent = new Intent();
 intent.setAction(android.content.Intent.ACTION_VIEW);
 File file = new File(path);
 String extension = path.substring(path.lastIndexOf("."));

 if(extension.equalsIgnoreCase(".avi") || extension.equalsIgnoreCase(".mp4"))
 {
  intent.setDataAndType(Uri.fromFile(file), "video/*"); 
 }
 else
 {
  intent.setDataAndType(Uri.fromFile(file), "audio/*");
 }

 startActivity(intent); 
}

Android_Intent방식을 활용한 Social 기능 구현_Filter 적용하기.

Explain.
앞서, intent기능을 활용한 social기능 구현하는법을 포스팅하였습니다.
이번에는 각 intent마다 필터링을 하여
각 app 마다 맞춰줘야할 템플릿을 맞춰주는것을 포스팅.


Code.
public void Share()
{
 File videoFile = new File("My Video File Path");

 Intent shareIntent = new Intent(Intent.ACTION_SEND);
 
 shareIntent.setType("video/mp4");
 shareIntent.putExtra(Intent.EXTRA_SUBJECT, "My Video");  
 shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(videoFile));
 shareIntent.putExtra(Intent.EXTRA_TEXT, "Enjoy the Video");
 

 PackageManager pm = getPackageManager();
 Intent sendIntent = new Intent(Intent.ACTION_SEND);
 sendIntent.setType("text/plain");
 
 Intent openInChooser = Intent.createChooser(shareIntent, "select app to share"); 
// shareIntent를 기본으로한 chooser 생성.
 
 List<ResolveInfo> resInfo = pm.queryIntentActivities(shareIntent, 0); 
// share intent를 지원하는 resolveinfo 를 받아온다.
 List<LabeledIntent> intentList = new ArrayList<LabeledIntent>(); 
// 추가 intent를 담을 공간.
 
 for(ResolveInfo ri : resInfo) 
// 위에서 받아온 resolveinfo 반복(foreach)
 {
  String packageName = ri.activityInfo.packageName; 
  
  if(packageName.contains("android.email")){ 
// 위에서 생성한 intent는 email 용이므로 intent에 email package를 넣어준다.
   shareIntent.setPackage(packageName);
  } else { // 그외의 의경우
   Intent intent = new Intent();
   intent.setComponent(new ComponentName(packageName, ri.activityInfo.name));
   intent.setAction(Intent.ACTION_SEND);
   intent.setType("video/mp4");
      if(packageName.contains("youtube")) // 현재 youtube filter적용 예시.
      {
       Log.d("SHARE", "In Youtube : " + packageName);
       ContentValues content = new ContentValues(4);
       content.put(Video.VideoColumns.TITLE, "My Video Title");
       content.put(Video.VideoColumns.DATE_ADDED,
        System.currentTimeMillis() / 1000);
       content.put(Video.Media.MIME_TYPE, "video/mp4");
       content.put(MediaStore.Video.Media.DATA, videoFile.getAbsolutePath());
       ContentResolver resolver = getBaseContext().getContentResolver();
       Uri uri = resolver.insert(MediaStore.Video.Media.INTERNAL_CONTENT_URI, content); 
       // Extnernal 형식의 path의 경우 EXTERNAL_CONTENT_URI 사용
       
       intent.setType("video/*");
       intent.putExtra(Intent.EXTRA_STREAM, uri);
      }
      else // Youtube가 아닌 경우.
      {
       Log.d("SHARE", "Other : " + packageName);
       intent.putExtra(Intent.EXTRA_SUBJECT, "Video");  
       intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(videoFile));
       intent.putExtra(Intent.EXTRA_TEXT, "Enjoy the Video");
      }

      intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon));
  }

 }

 LabeledIntent[] extraIntents = intentList.toArray( new LabeledIntent[ intentList.size() ]);

 openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
 startActivity(openInChooser);

}

2014년 9월 2일 화요일

Android_Intent 방식을 활용하여 Share기능 구현.



Explain.

Android Native기능중 Social관련 기능을 아주 쉽고 빠르게 구현할수있는방법.
Api를 활용하는것보다 완성도적인 측면에서는 떨어짐.
예제는 video파일 공유를 예로 든것이며
따로 text, image도 intent설정만 조금 변경해주고 방식은 동일하다.


Flow.
1. 공유할 정보를 담은 Intent 생성.
2.현재 휴대폰에 설치되어있는 App중 이 Intent형식을 지원하는 App 선택창 제공
3.App 선택후 공유진행.

순으로 진행되는것이 일반적이며 이때 App마다 intent설정 방식이
조금 차이가 있는(대부분 동일) app이 존재하므로 filter를 적용해주는것도 하나의방법.
(추후 포스팅 하겠습니다.)


Code.
public void Share(){
  Intent intent = new Intent(Intent.ACTION_SEND);
  
  intent.putExtra(Intent.EXTRA_SUBJECT, "My Video");  
  intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(videoFile));
  intent.putExtra(Intent.EXTRA_TEXT, "Enjoy the Video");
   
  intent.setType("video/mp4");
  
  startActivity(Intent.createChooser(intent, "Choose an Email client" ));
  }