[HTML5] audio, video tag 지원 유무 확인

Posted by Find my true self Fimtrus
2014. 4. 28. 18:17 Programming/Hybrid App

if ( document.createElement("video").canPlayType ) {console.log("true")} //지원
else { console.log( "false" );} //미지원
이 댓글을 비밀 댓글로

[Javascript] html tag 내에 있는 데이터 제거.

Posted by Find my true self Fimtrus
2014. 4. 8. 11:49 Programming/Hybrid App
.replace(/^()([0-9a-zA-Z가-힣~!\#$^&*\=+|:;?"<,.>'\s]*)(<\/td>)$/, "$1$3")

.replace(/(<td>|<td ([0-9a-zA-Z-_~!\#$^&*\=+|:;?"<,'\s]{0,}>))([0-9a-zA-Z가-힣-_~!\#$^&*\=+|:;?"<,.>'\s]{0,})(<\/td>)/,"$1$4")



테스트용.

이 댓글을 비밀 댓글로

[Android] Android에서 "Unknown error merging manifest"

Posted by Find my true self Fimtrus
2014. 2. 20. 17:07 Programming/Android

Android ADT 19(맞나??ㅎㅎ) 이상부터 Manifest.xml Merge 기능이 추가되었다.

메인이 되는 프로젝트의 project.properties 파일에 manifestmerger.enabled=true 를 추가해주면 된다.

하지만!!!

Manifest의 내용이 중복될 경우, 중복되었다는 메시지를 보여주지만, 가끔 말도안되는 에러를 보여줄 때가 있다.

그중 하나가...

 "Unknown error merging manifest"

라는 메시지 인데..... 정말 엄청난 삽질을하다가.. 어느 블로거에 의해서 

문제를 해결하게 되었다.

메인 프로젝트의 android : targetSdkVersion이 

라이브러리 프로젝트의 targetSdkVersion 보다 낮으면 오류가 표시되므로 

라이브러리의 targetSdkVersion을 낮추던가, 메인의 버전을 높여주면된다.


출처 : u1aryzの備忘録とか
이 댓글을 비밀 댓글로

[Android] XML drawable 을 코드로 만들기(xml selector를 java code로 변환)

Posted by Find my true self Fimtrus
2014. 2. 20. 11:25 Programming/Android
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed},
    getResources().getDrawable(R.drawable.pressed));
states.addState(new int[] {android.R.attr.state_focused},
    getResources().getDrawable(R.drawable.focused));
states.addState(new int[] { },
    getResources().getDrawable(R.drawable.normal));

imageView.setImageDrawable(states);  //YOUR IMAGE HERE
//AND FOR BUTTON
 button.setBackgroundDrawable(states);//FOR BUTTON
이 댓글을 비밀 댓글로
    • 2018.04.16 15:05
    비밀댓글입니다

[Android] WebView 에서 getGeoLocation이 동작하지 않을 때( getGeoLocation is not working on Android Webview) onGeolocationPermissionsShowPrompt

Posted by Find my true self Fimtrus
2014. 2. 18. 16:50 Programming/Android

웹뷰를 사용하다가 보면 getGeoLocation을 사용할때가 있다.

아이폰에서는 전혀 문제 없이 동작하는데 

안드로이드! 이놈에서만 위치정보를 받지 못한다.

인터넷을 무쟈게 검색후..

해답 발견.

WebChromeClient의 아래 Method를 overriding하여 구성해줘야하는데

코드는 다음과 같다.


@Override
public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {

	final String myOrigin = origin;
	final GeolocationPermissions.Callback myCallback = callback;

	CommonDialogs dialog = new CommonDialogs(MainActivity.this); //custom Dialog

	dialog.showAlertDialog(MainActivity.this, R.string.gps_agree, new DialogInterface.OnClickListener() {

		@Override
		public void onClick(DialogInterface dialog, int which) {
			myCallback.invoke(myOrigin, true, true);
		}
	}, new DialogInterface.OnClickListener() {

		@Override
		public void onClick(DialogInterface dialog, int which) {
			 myCallback .invoke(myOrigin, false, false);
		}
	});

//			super.onGeolocationPermissionsShowPrompt(origin, callback);
}


참고 : http://bbulog.tistory.com/archive/20131125
이 댓글을 비밀 댓글로

[Android] Fragment Width(넓이)

Posted by Find my true self Fimtrus
2014. 2. 6. 18:09 Programming/Android
mRootLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
	@Override
	public void onGlobalLayout() {
		mFragmentWidth = getView().getWidth();
		mFragmentHeight = getView().getHeight();
		if (mFragmentWidth > 0) {
			ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mFragmentWidth);
			mMapView.setLayoutParams(params);
		}
	}
});
이 댓글을 비밀 댓글로

[Android] Uri로 Bitmap 추출

Posted by Find my true self Fimtrus
2014. 1. 9. 11:15 Programming/Android
Bitmap bitmap = null;
try {
	bitmap = Images.Media.getBitmap(getActivity().getContentResolver(), uri);
} catch (FileNotFoundException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
} catch (IOException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}
이 댓글을 비밀 댓글로

[Javascript] 정규식. 전화번호, 휴대폰 번호 추출. 검증

Posted by Find my true self Fimtrus
2013. 12. 20. 10:20 Programming/Hybrid App

웹페이지를 제작시, 전화번호를 입력받는 화면이 있다.

아래와 같은 화면...

운전자 연락처(숫자만 입력) (필수입력)


파라미터, 화면 디스플레이시 하이픈(-)을 요구할 때,

정규식을 사용하면 편하다.


//가운데가 4자리
"01012345678".replace(/^(01[016789]{1}|02|0[3-9]{1}[0-9]{1})-?([0-9]{3,4})-?([0-9]{4})$/, "$1-$2-$3")
//가운데가 3자리
"0101234567".replace(/^(01[016789]{1}|02|0[3-9]{1}[0-9]{1})-?([0-9]{3,4})-?([0-9]{4})$/, "$1-$2-$3")

이렇게 정규식을 사용하면 가운데가 3자리든 4자리든 010-1234-5678, 010-123-4567 의 형태로 변경하여 사용할 수 있다.

* $1, $2, $3 : 괄호 순서대로 값들을 들고 올 수 있다.

* 시작부분 ^ : [] 안의 ^ 는 부정을 의미하지만, [] 밖의 ^는 시작을 의미한다.

* 끝 부붙 $ : 끝을 의미한다. 위의 정규식으로 보자면 끝에 4자리 라고 표현된다.

이 댓글을 비밀 댓글로

[Javascript] 아이폰에서 브라우저 백버튼 클릭시 새로고침 안되는 문제.

Posted by Find my true self Fimtrus
2013. 12. 18. 15:32 Programming/Hybrid App

크롬기반 브라우저 및 안드로이드에서는 

브라우저 백버튼을 클릭하였을 때, 이전 페이지 정보를 refresh 한다.

하지만 IOS 사파리의 경우 그렇지 않다.

페이지에 대한 모든 정보를 사파리에서 저장하고 있기 때문이다.

흔히 Hybrid App, Single Page Web 을 구현하게 되면(일반 web도 마찬가지...),

간혹 로그인 체크라던가, 필요한 데이터를 받기 위해 document 의 ready에서 ajax를 통해 API들을 요청하게 된다.

 하지만 아이폰(사파리)에서 브라우저 백버튼을 눌렀을 때, ready 내의 fuction이 정상 동작하지 않게 된다.

이를 해결하기 위해선 

window 객체의 onpageshow라는 이벤트를 구현해야 아이폰에서 브라우저 백버튼을 눌렀을 때도, 원하는 결과를 얻을 수 있다.


//javascript 만을 이용한 방법
window.onpageshow =  function(event) {
			
			//back 이벤트 일 경우
	if ( event.persisted) {
				
		//====TODO : 
	}
			
}
//jQuery를 이용한 방법
$(window).bind("pageshow", function(event) {
	
	//back 이벤트 일 경우
	if ( event.originalEvent && event.originalEvent.persisted) {
		
		//TODO : ======
	}
	
});


jQuery를 이용할 때, event.originalEvent를 체크하는 이유는

브라우저에서 발생시킨 event 내에 event.originalEvent 가 없을 수 있기 때문에

존재하는지 체크를 먼저하게 된다.

그리고 persisted 를 통해, 이 이벤트가 백버튼(실제로는 continue의 느낌이 강함..)에 대한

이벤트인지 확인 할 수 있다(boolean 형태)


이 댓글을 비밀 댓글로

[Android] 다이얼로그(Dialog) 닫기 방지. 닫히지 않게 하기.

Posted by Find my true self Fimtrus
2013. 12. 17. 17:02 Programming/Android

다이얼로그로 로그인 화면이나, 비밀번호 입력창 등을 만들기도 한다.

가장 많이 사용 하는 것이 AlertDialog.Builder 를 사용할텐데, 

기존에 제공하는 리스너들을 Overriding 해서 사용할 경우

Ok, Cancel 버튼 클릭시 원하지 않게 창이 닫기게 된다.

아래의 방지코드를 넣게 되면 창이 닫기지 않게 된다.


dialog.setOnShowListener(new DialogInterface.OnShowListener() {
    @Override
    public void onShow(DialogInterface arg0) {
        Button positiveButton = ( (AlertDialog) arg0 ).getButton(AlertDialog.BUTTON_POSITIVE); 
        //Or AlertDialog.BUTTON_NEGATIVE
        positiveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //=========================
            }
        });
    }
});

확인 버튼과 취소 버튼에 대한 리스너를 달아주면 끝!

닫히지 않는 다이얼로그를 볼 수 있다.(닫을때 dismiss 하는 걸 잊으면 안돼요~)

AlertDialog.Builder 를 사용하면 create()를 실행하여 반드시 AlertDialog 객체를 생성한 뒤에 사용해야 setOnShowListener를 볼 수 있다.

이 댓글을 비밀 댓글로