[Android] Notification에 큰 이미지 적용하기

Posted by Find my true self Fimtrus
2014.12.30 14:47 Programming/Android

최근에 많은 앱들이 젤리빈(Android 4.1) 버전에서 추가된 BicPictureStyle을 이용하여 


노티바에 큰 이미지를 보여주고 있다.



두손가락을 이용해 위로 드래그 하게 되면 접히고, 아래로 드래그 하면 큰이미지가 보이면서 열리게 된다.


즉..접혔을때의 컨텐츠와 열렸을때 서로 다른 컨텐츠를 지정할 수 있다.


필자는 다양한 버전을 지원하기 위해 v4 support library를 사용하였으며


해당 값들의 세팅은 임의로 지정하였다.



/**
  * 먼저 NotificationCompat Builder를 선언한다.
  *  Builder의 경우 접혔을 때 노티바에 표시할 컨텐츠를 설정한다.
  */
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
	.setSmallIcon(R.drawable.ic_launcher) //작은아이콘 세팅
	.setContentTitle(context.getResources().getString(R.string.title) ) //노티바에 표시될 타이틀
        .setContentText(context.getResources().getString(R.string.message) ) //노티바에 표시된 Description
        .setAutoCancel(true) //클릭하게 되면 사라지도록...
        .setVibrate(new long[] { 1000, 1000 }) //노티가 등록될 때 진동 패턴 1초씩 두번.
        .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); //노티가 등록될 때 사운드와 진동이 오도록, 기본 사운드가 울리도록.

/**
  * 두 손가락으로 드래그 했을 때 표시된 컨텐츠를 설정한다.
  */
BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle(builder); //상단의 빌더를 인자로 받음..
Bitmap bigPictureBitmap  = BitmapFactory.decodeResource(context.getResources(), R.drawable.i_hero); //드래그 후 공간에 표시할 이미지.
	bigPictureStyle.bigPicture(bigPictureBitmap) //상단의 비트맵을 넣어준다.
	.setBigContentTitle(context.getResources().getString( R.string.big_title) ) //열렸을때의 타이틀
	.setSummaryText(context.getResources().getString( R.string.big_message) ); //열렸을때의 Description


위와 같이 설정을 하게 되면 기존에 드래그해도 반응이 없던 노티가


아래로 커지면서 큰이미지를 표시하게 된다.


혹시...이해가 잘안된다면 아래 샘플을 참고..



notificationSample.zip



이 댓글을 비밀 댓글로
    • 안녕하세요
    • 2015.05.11 17:00
    안드로이드 개발에 많은 도움이 되었습니다. 감사합니다.
    한 가지 질문이 있습니다 ~
    BigPictureStyle 를 이용하여 push 알림에 이미지를 추가까지 완료를 하였는데요..
    닫힌 상태로 push 알림이 와 두 손가락을 이용하여 드래그하여야 expand 가 되어 이미지가 나오는데 처음 푸시 상태에서 이미지가 열림 상태로 나오게 하는 방법이 있나요?
    • 안녕하세요

      답변이 조금 늦었네요.

      expand 관련 메쏘드는 존재하지 않는 것 같아요.

      아무래도 여러개의 앱들의 푸시가 모두 펼쳐져 있으면 유저로서 불편함을 느낄 수 있기 때문이지 않을까 생각이 드네요.

[Android] drawable 리소스를 비트맵으로 변환. drawable resource to bitmap

Posted by Find my true self Fimtrus
2014.12.26 14:45 Programming/Android

바꿀때마다 소스를 찾아봐서


글남기네요..


정말 간단한건데 자바스크립트랑 안드로이드랑 왔다갔다하니....헷갈림..



//샘플 소스
Bitmap bigPictureBitmap  = BitmapFactory.decodeResource(context.getResources(), R.drawable.i_hero);


이 댓글을 비밀 댓글로

[Javascript] 커스텀 이벤트 만들기.

Posted by Find my true self Fimtrus
2014.10.31 15:22 Programming/Web

jQuery의 경우 trigger를 통해 간단하게  커스텀이벤트를 만들 수 있다.


하지만 실제로는 약간은...복잡한 형태로 되어 있다.


- 샘플코드

var customEvent;

if (document.createEvent) {
	
	customEvent = document.createEvent("HTMLEvents");
	customEvent.initEvent("fimtrus", true, true);
} else {
	customEvent = document.createEventObject();
	customEvent.eventType = "fimtrus";
}

if (document.createEvent) {
	mtk.now.inputObj.dispatchEvent(customEvent);
} else {
	mtk.now.inputObj.fireEvent("on" + event.eventType, event);
}


위의 코드를 보면 createEvent의 존재유무로 분기를 하고 있다.


createEvent가 존재하지 않을 경우 Internet Explorer 기반의 브라우저를 사용하고 있는 것이고,


createEvent가 존재할 경우 웹킷 기반(크롬, 사파리 등.. 오페라나 파폭은 확인못해봤음...)의 브라우저를 사용하고 있다는 것이다.


익스플로러와 다른 브라우저 간의 제공 메소드가 다르기 때문에 


모든(대부분) 브라우저를 지원하기 위해서는 위와 같이 만들어야 한다.



샘플 코드를 보면 fimtrus 라는 이벤트를 만들었고 


두번째 분기문에서 해당 dom 에 이벤트를 보내게 되면 dom에 지정되어 있는 이벤트 리스너가 동작하게 된다.



만약..jQuery를 사용한다면 그냥 간단하게 한줄로...


$(dom).trigger('fimtrus') 


결론은...jQuery를 사용하면 편리하다!ㅎ




이 댓글을 비밀 댓글로
    • ㅁㅎㅁ
    • 2015.10.07 02:00
    예제가 없어서 불편

[Javascript] Iframe document 얻기.

Posted by Find my true self Fimtrus
2014.08.13 15:09 Programming/Web

query에는 css 선택자를 넣어주면된다

ex) getFrameDocuement("#frame1");


function getFrameDocument( query ) {
	var frame = document.querySelector( query );
	if (frame == null)
		return;

	var frameDocument = frame.contentWindow || frame.contentDocument;
	return frameDocument;
}


이 댓글을 비밀 댓글로

[Javascript] String byte check. 스트링 바이트 체크 (한글).

Posted by Find my true self Fimtrus
2014.08.13 14:38 Programming/Web

자바스크립트에서 스트링 길이를 구할 때, 한글 길이와 영문길이를 같이 계산하는 경우가 대부분이다.


하지만, 한글의 경우 2byte로 계산해야 정상적인 계산이라고 볼 수 있는데,


구글링 중 어느 블로그를 통해 계산법에 대해 알게 되었다.


현재 string의 byte 수를 구하는 function 이다.


String.prototype.getBytes = function() {
	var contents = this;
	var str_character;
	var int_char_count;
	var int_contents_length;

	int_char_count = 0;
	int_contents_length = contents.length;

	for (k = 0; k < int_contents_length; k++) {
		str_character = contents.charAt(k);
		if (escape(str_character).length > 4)
			int_char_count += 2;
		else
			int_char_count++;
	}
	return int_char_count;
}


그리고 조금더 응용해서 


입력된 숫자 만큼의 길이의 스트링을 리턴해준다.


String.prototype.getStringFromByteLength = function( byteLength ) {
	var contents = this;
	var str_character;
	var int_char_count;
	var int_contents_length;
	
	var returnValue = "";
	
	int_char_count = 0;
	int_contents_length = contents.length;
	
	for (k = 0; k < int_contents_length; k++) {
		str_character = contents.charAt(k);
		if (escape(str_character).length > 4)
			int_char_count += 2;
		else
			int_char_count++;
		
		if ( int_char_count > byteLength ) {
			break;
		}
		returnValue += str_character;
	}
	return returnValue;
}



위의 function은 출처가 어딘지 모르겠네요...


혹시 직접 만드신분이 보신다면...댓글 부탁드려요~


이 댓글을 비밀 댓글로

[Android] 사진 저장 후 갤러리에 보이지 않는 경우-MediaScanner

Posted by Find my true self Fimtrus
2014.07.25 10:51 Programming/Android

개별 파일로 intent를 통해 리소스 디비 업데이트

이동~~(Click)



이번에는 폴더 전체 스캔, MediaScanner를 통해 업데이트를 해보겠습니다.


이부분도 간단하게 구현가능한데, 범용성을 위해 클래스로 뺐습니다^^;



package com.jhlibrary.util;

import android.content.Context;
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.MediaScannerConnectionClient;
import android.net.Uri;

public class MediaScanner {
	private Context mContext;

	private String mPath;

	private MediaScannerConnection mMediaScanner; 
	private MediaScannerConnectionClient mMediaScannerClient;

	public static MediaScanner newInstance(Context context) {
		return new MediaScanner(context);
	}

	private MediaScanner(Context context) {
		mContext = context;
	}

	public void mediaScanning(final String path) {

		if (mMediaScanner == null) {
			mMediaScannerClient = new MediaScannerConnectionClient() {

				@Override
				public void onMediaScannerConnected() {
					mMediaScanner.scanFile(mPath, null); // 디렉토리
					// 가져옴
				}

				@Override
				public void onScanCompleted(String path, Uri uri) {

				}
			};
			mMediaScanner = new MediaScannerConnection(mContext, mMediaScannerClient);
		}

		mPath = path;
		mMediaScanner.connect();
	}
}


직접 구현의 경우, MediaScannerConnection 클래스를 통해 디비에 접근(?), 


파일 또는 디렉토리 전체에 대한 업데이트를  할 수 있다.


먼저 MediaScannerConnectionClient 를 객체화 해줍니다.

(이 클래스는 MediaScannerConnection에서 callback을 받기 위한 클래스입니다).


그리고  connection을 위한 MediaScannerConnection을 객체화 하면 끝~!



사용하기 위해선 아래처럼 하시면 됩니다.



MediaScanner scanner = MediaScanner.newInstance(MainActivity.this);
scanner.mediaScanning("파일경로"); 
이 댓글을 비밀 댓글로
    • 1234
    • 2015.01.23 10:34
    MediaScanner scanner = MediaScanner.newInstance(MainActivity.this);
    scanner.mediaScanning("파일경로");
    여기서 MainActivity에서 오류가나는데 왜이런거죠?
      • 1234
      • 2015.01.23 10:38
      그리고 파일경로에는 /sdcard 이런식으로 적는건가요?
    • Environment 클래스에 보면 sd카드 등 파일패스 경로가 지정되어 있습니다.

      그걸 사용하셔서 해당 파일의 위치를 지정하시면 됩니다.
    • 스르르
    • 2015.11.27 00:06
    정말정말정말 감사합니다~~ 며칠동안 고민하던거 바로 해결했어요

[Android] 사진 저장 후 갤러리에 보이지 않는 경우.

Posted by Find my true self Fimtrus
2014.07.25 10:34 Programming/Android

안드로이드에서 현재 화면을 저장하는 경우, 또는 이미지를 저장하였을 때


갤러리에서 보이지 않는 경우가 있다.


안드로이드에서는 사용자가 가지고 있는 리소스를 디비화 해서 저장하고 있는데,


해당 파일의 정보 및 썸네일까지 담고 있다.


그래서 갤러리 같은 경우, 이미지 파일을 보여주긴 하지만 상당히 빠른 속도로 화면을 볼수 있는 이유 중의 하나이다.


아무튼..갤러리에 보여주기 위해서는 디비에 업데이트 해주는 인텐트가 필요하다. 아니면 별도의 스캐너를 사용해도되고....


간단하게 인텐트를 통해 해당 파일을 업데이트하는 방법이다.




//
context.sendBroadcast(new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)) );
//

context : Activity 또는 해당 어플리케이션의 context

file : 업데이트할 파일 객체.


이 댓글을 비밀 댓글로

안드로이드용 대출금계산기( 원금균등상환, 원리금균등상환 )

Posted by Find my true self Fimtrus
2014.07.17 21:21 Application/Android


안드로이드용 대출금계산기 앱을 출시했습니다.~


이것도 마찬가지로....제가 필요해서 만들었습니다 ㅎㅎㅎ


정말이지...금융 계산은 어렵군요..


필요하신분들 받아가시길 바랍니다.


아래 클릭!


Download Page(Click)







이 댓글을 비밀 댓글로
    • 2015.07.21 20:31
    매우좋아요감사해요

안드로이드용 자 앱. Ruler Application

Posted by Find my true self Fimtrus
2014.07.17 21:19 Application/Android


안드로이드용 자(Ruler) 앱을 출시했습니다.~


앱 명은 "자가필요할땐" 이구요...


사무실을 벗어나 있을경우, 데이트하고 있을 경우!!


가끔 자가 필요할때가 있더라구요..


그래서 정말 자 기능만 넣었습니다.


필요하신분들 받아가시길 바랍니다.


아래 클릭!


Download Page(Click)



이 댓글을 비밀 댓글로

안드로이드용 보안카드 앱.

Posted by Find my true self Fimtrus
2014.07.17 21:15 Application/Android

안녕하세요~


안드로이드용 보안카드 앱을 출시했습니다.~


저도 사용하고 있구요. 제가 사용하면서 필요했던 기능들만 넣었습니다.~


필요하신분들 받아가시길 바랍니다.


아래 클릭!


Download Page(Click)



이 댓글을 비밀 댓글로