본문링크 : http://www.clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=122095

 

안드로이드의 경우 2.3(진저브레드) 이전까지는 PC 연결 시 일반적인 이동식 디스크(UMS)로 인식되서 사용했습니다. UMS로 연결될 경우 폭넓은 호환성(PC / 맥 뿐만 아니라 대부분의 가전제품들도 인식이 가능합니다)과 속도가 가장 큰 장점으로 발휘되었죠.

 

그러다가 태블릿용 안드로이드인 3.0(허니콤)부터 MTP라는 연결방식으로 바뀌게 됩니다. 그리고 MTP는 4.0(ICS)과 4.1(젤리빈)도 계속 안드로이드의 표준 PC 연결 인터페이스로 자리잡고 있습니다.

 

하지만 MTP는 MS가 만들었고 MS의 윈도우 플레이어 안에 종속되는 규격이라는 한계가 있습니다. UMS처럼 폭넓은 호환성을 갖는것도 아닌데, 윈도우 xp/비스타/7에서만 인식이 됩니다. (8은 리테일 판매가 시작이 안되서 일단 제외)

 

ms 윈도우라 하더라도 윈도우 미디어 플레이어가 없으면 인식이 안 되는 경우도 있을 정도로 호환성에 있어선 쥐약인 규격이고 맥에서 쓰려면 구글이 제공하는 안드로이드 파일 트랜스퍼란 별도 프로그램을 써야 인식이 되죠.

 

 

1. UMS의 단점이자 MTP의 장점은?

그럼 여기서 드는 의문. 안드로이드는 PC 연결 인터페이스를 왜 변경했을까요? 물론 분명한 이유가 있고 그 이유부터 언급되어야겠죠?

 

우선 UMS의 가장 큰 단점. 안드로이드 내부에서(PC 연결이 안 된 상태에서) 합리적인 파일 시스템의 관리가 안 됩니다. 크게 두 가지의 사례가 있습니다.

 

1) 어플을 설치했을 때 어플이 설치된 경로가 노출되어서는 안된다

2) 디스크 내부의 DB 작업이 없기 때문에 별도 DB 구축 작업이 필요하다

 

1)의 경우 안드로이드 초기부터 많은 고민과 불만 등이 쌓여있는 부분입니다. 디스크 안에서 사용자 궈한을 넘어서는 파일 제어가 안 되기 때문에 안드로이드는 어플이 설치될 공간을 별도 파티션을 통해 관리하고 있었고 이 결과 내부 메모리의 파티션이 쪼개지는 문제점이 발생하니다.

 

갤럭시 S2를 예로 들어봅시다. 기억이 맞다면 내부 어플 설치 공간으로 1.8GB 정도가 할당되었을 겁니다. 갤럭시 S2의 내부 메모리는 16GB인데 이 중 1.8GB는 사용자가 못 쓰고 안드로이드 앱을 설치하기 위한 별도 공간으로 예약된 셈이죠.

 

초기 안드로이드 기기들은 이 공간이 너무 협소해 마이크로 SD로 32GB까지 늘려도 앱 설치 공간 부족으로 인해 어플 설치가 안 되는 경우도 비일비재 했고 갤럭시 S처럼 내부 앱 설치 공간을 넉넉하게 잡아도 사용자가 그만큼의 앱을 설치하지 않으면 그냥 죽는 공간으로 되기 때문애 이래저래 문제라 할 수 있는 부분인 셈이죠.

 

하지만 MTP로 전환하면 안드로이드 OS에서 강력한 파일 제어 권한을 갖기 때문에 이런 문제를 벗어날 수 있습니다. 갤럭시 S3를 예로 들면 32GB의 내장 메모리 안에 그냥 사용자 데이터와 앱들이 혼재되어 있습니다.

 

하지만 PC에 연결해서 탐색기로 내부 메모리를 보면 내부 메모리의 모든 내용들이 공개되지 않죠. 즉, 안드로이드 시스템을 사용자가 건들지 않게 만들면서도 내부 메모리를 최대한 활용할 수 있는 방법이 MTP이기 때문에 MTP를 표준 인터페이스로 사용한다고 할 수 있습니다. (파일이나 폴더 속성을 히든으로 하는 것과는 다른 문제입니다.)

 

정리를 하면 다음과 같습니다.

 

  - 기존의 UMS는 내부 메모리를 쪼개 앱 설치 공간을 별도로 할당해야만 한다.

  - MTP는 하나의 통짜 메모리 안에 앱과 기타 컨텐츠(사진, 음악, 영상, 문서 등)를 모두 관리할 수 있다.

 

내부 메모리가 32GB짜리인 갤럭시 노트와 갤럭시 S3를 비교하면 좋을것입니다.

 

노트의 경우 실제 사용 가능한 공간은 23GB정도고 거기에 2GB 가까운 별도 앱 설치 공간이 따로 할당되어 있으며

S3는 실세 사용 가능한 공간이 25GB정도고 이 용량 안에 앱을 포함한 모든 컨텐츠를 저장할 수 있습니다.

 

2)의 경우는 약간의 오해가 있는 부분인데요, MTP는 속도가 느리다.. 라는게 오해의 핵심입니다.

 

확실히 MTP는 UMS에 비하면 속도가 느릴겁니다. 대신 UMS에선 반드시 해야 하고 MTP에선 안 해도 되는 작업이 있습니다. 바로 미디어 스캐닝입니다.

 

UMS는 메모리 내부를 DB화시키지 않기 때문에 PC와의 연결이 끊기면 내부 메모리를 DB화하는데 시간이 걸리고 이 과정을 미디어 스캐닝이라 부릅니다.

 

MTP는 파일을 복사하면서 DB가 구축되기 때문에 PC와의 연결이 끊어진 후 별도의 미디어 스캐닝 작업 없이 바로 쓸 수 있습니다. 대신 속도가 좀 느려지겠죠.

 

이 정도가 UMS의 단점이자 MTP의 장점이라 할 수 있을 것입니다.

Posted by duehd88
,

IHTMLDocument2, IHTMLElementCollection, IHTMLElement 등등을 쓰기 위해선 mshtml을 using해주어야 한다.

얘는 참조우클릭후참조추가 - COM - Microsoft HTML Object Library 체크 후 확인하면된다.

'Programing > C#' 카테고리의 다른 글

[C#] SHDocVw로 InternetExplorer 객체 사용하기  (0) 2015.06.22
Posted by duehd88
,

SHDocVw를 이용해 InternetExplorer객체를 이용해보는 프로젝트를 하려고 하는데 당최 찾을 수가 없었다 알고보니 미리 참조가 되어있지 않았던 탓

C:\Windows\System32\shdocvw.dll를 참조하기위해 프로젝트의 참조 부분에 Microsoft Internet control을 추가 해주면 된다.

참조에서 마우스 우클릭후 참조추가 >COM>Microsoft Internet Controls 체크 후 확인

 

자 이제 사용하면된다.

 

간단한 예제

 

    SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
    ie.Visible = true;
    ie.Navigate("http://naver.com/");

 

이렇게 하면 네이버에 접속된 익스플로러 새창이 뜬다.

 

---------------------------------------------------------------------------------

참고로 메서드위에 DllImport를 이용하면 참조하지 않고 사용이 된다고 한다.

대신 static extern으로 이용가능

 

using System.Runtime.InteropServices;

[DllImport("C:\\Windows\\System32\\shdocvw.dll")]

 private(public) static extern 데이터타입 함수명(파라미터);

'Programing > C#' 카테고리의 다른 글

[C#] mshtml 사용하기  (0) 2015.06.22
Posted by duehd88
,