JAVA 2013. 2. 7. 11:10

사용이유 

- 로그인 정보와 같이 고유한 값이 필요할 때 여기저기서 new 로 생성하지않고 

A a = new A.getInstance(); 로 호출하여 고유값을 공유한다.


이렇게 호출 시 최초 호출에  A클래스의 인스턴스 공간이 생성되고 

이 후 호출 시에는 최초 호출한 인스턴스를 가져온다. 


지정한 클래스 인스턴스가 절대로 한개밖에 존재하지 않는것을 보증하고 싶을경우.


데이터 공유용으로는 잘못된사용. 



http://underclub.tistory.com/436

'JAVA' 카테고리의 다른 글

JAVA] 간단한 상속 개념 정리  (0) 2014.02.09
JAVA] 현재 날짜, 시간 구하기  (1) 2011.11.30
JAVA] split으로 문자열 나누기  (0) 2011.10.17
JAVA] 22. 인터페이스 - 1  (0) 2011.08.19
JAVA] drawRect 속성 알아보기  (1) 2011.08.18
posted by 젊은쎄오
:
Android 2012. 10. 8. 17:47
안드로이드 모바일에서 이미 개발된 모바일 웹을 웹뷰로 띄워야 할 때가 있습니다. 


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


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


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


그래서 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());


posted by 젊은쎄오
:
IPhone 2012. 8. 27. 18:10

안드로이드에서는 finish(); 면 되던것이 아이폰에선 복잡하네요 


기본적으로 오브젝티브 C도 익숙치 않아 그냥 따라하기식으로 만들고있습니다.


우선 viewController.h 문서에 스토리보드에서 그린 버튼을 등록합니다.



아래와 같이 버튼에서 소스로 우클릭 드래그를 한 뒤 손을 떼면 


아래와같은 해당 버튼을 컨트롤할 변수명 적는 곳이 나옵니다. 


입력 후 엔터를 치면 자동으로 삽입됩니다.




삽입 한 후 backButton 이라는 매소드를 만들고 해당 매소드 좌측에 빈 동그라미를 클릭하여


버튼으로 링크를 걸어 줍니다. 그럼 이 backButton 이란 매소드는 뒤로가기 버튼의


클릭 리스너 매소드가 됩니다. 




이제 viewController.m 문서로 와서 backButton 매소드를 만든 뒤 



[self.navigationController popViewControllerAnimated:YES]; 이 줄을 


매소드에 추가하면 버튼 눌렀을 때 뒤로가게 됩니다. 














posted by 젊은쎄오
: