'윈폰'에 해당되는 글 2건

  1. 2011.12.02 [wp7] 윈폰7 앱 메모리사용량 참조
  2. 2011.11.08 [wp7] EUC-KR을 윈폰7에서 사용하기 (5)
Windows Phone 72011.12.02 15:47

Microsoft.Phone.dll에 포함되어 있는 Microsoft.Phone.Info.DeviceExtendedProperties 클래스를 통해
 
long totalBytes = (long)Microsoft.Phone.Info.DeviceExtendedProperties.GetValue(“DeviceTotalMemory”);
 
이런 식으로 얻을 수 있습니다.
 
GetValue에 parameter로 전달할 수 있는 이름은 아래와 같습니다.
 
DeviceTotalMemory – 윈도우폰 전체 메모리
ApplicationCurrentMemoryUsage – 앱의 현재 메모리 사용량
ApplicationPeakMemoryUsage – 앱의 최고 메모리 사용량
 
 
메모리 사용량을 간단히 표시할 수 있는 MemoryUsageBox 컨트롤
 
이것을 간단하게 사용들 하시라고 오늘 HugeFlow.Phone 라이브러리에
메모리 사용량을 표시해주는 컨트롤을 추가하였습니다.
이름하야 MemoryUsageBox란 컨트롤입니다.
 
일반적으로는 메모리 사용량을 보고 싶은 페이지에 아래와 같은 형태로 추가하시면 끝.
 
// Constructor
public DetailsPage()
{
    InitializeComponent();
 
#if DEBUG
    LayoutRoot.Children.Add(new MemoryUsageBox());
#endif
}

Posted by 동동(이재동)
Windows Phone 72011.11.08 11:46

이번에 코레일 프로젝트를 맞게 되었다.

하지만 코레일은 EUC-KR로 된 XML이였고 윈폰과 실버라이트는 지원하지 않았다.

하지만 어떤 고마우신분이 라이브러리를 제공해 주셧다 프로젝트 시작하기 3일전에… 타이밍!!!

일단 외부에서 EUC-KR로 된 xml파일을 윈폰에서 사용하는 방법

 

public void GetXmlData(Action<Dictionary<string, string>, Exception> callback, string url)
{
    WebClient webClient = new WebClient();
    webClient.OpenReadAsync(new Uri(url));
    webClient.OpenReadCompleted += (s, e) =>
        {
            Stream readStream = e.Result;
            Byte[] euckrXML = new Byte[readStream.Length];

            readStream.Read(euckrXML, 0, euckrXML.Length);
            readStream.Close();

            var temp = EUCKR_Unicode_Converter.GetUnicodeString(euckrXML);
            XmlReader reader = XmlReader.Create(new StringReader(temp));
            XElement xe = XElement.Load(reader);

            //상위 element data
            Dictionary<string, string> dict = new Dictionary<string, string>();
            foreach (var item in xe.Elements())
            {
                dict.Add(item.Name.LocalName, item.Value);
            }

            //다수의 하위 elements data
            var query = from item in xe.Descendants("trn_infos").Descendants("trn_info")
                        select item;

            List<Dictionary<string, string>> trnsInfos = new List<Dictionary<string, string>>();
            foreach (XElement item in query)
            {
                Dictionary<string, string> trnInfo = new Dictionary<string, string>();
                foreach (XElement subItem in item.Elements())
                {
                    trnInfo.Add(subItem.Name.LocalName, subItem.Value);
                }
                trnsInfos.Add(trnInfo);
            }

            //출력
            foreach (var item in trnsInfos)
            {
                foreach (var subItem in item)
                {
                    Debug.WriteLine("{0}:{1}", subItem.Key, subItem.Value);
                }
            }

            callback(dict, null);
        };
}

 

위의 XElement 까지만 참고하면 될꺼 같다.

나머지 소스는 그냥 xml을 dictionary로 바꾸기 위한 소스코드이다.

자 이제 euc-kr은 문제 없이 웹으로 부터 받아서 파싱 가능한 상태이다.

그렇다면 보낼때는 어떻게 해야할까?

내가 원하는 결과 값 : 서울 -> "%BC%AD%BF%EF"

이다. 원래 같았으면

string encodingResult = HttpUtility.UrlEncode(url);

이런식으로 urlencode를 이용하겠지만  이렇게

해서 해결하였다.

Byte[] temp = EUCKR_Unicode_Converter.GetEucKRString("서울");
StringBuilder sb = new StringBuilder();
foreach (byte b in temp)
{
    sb.AppendFormat("%{0:x}", b);
}

sb.tostring();

카일로님이 만드신 소스 정말 유용한거 같다.^^

원본 소스다.

Posted by 동동(이재동)