어플리케이션을 만들어 다른 계정으로 앱스토어에 등록한 적은 있지만, 제 계정으로는 처음 등록해 보는 어플리케이션입니다. 어제 등록을 했으니 다음 주쯤이면 결과가 나올 것 같습니다.

담배피는 횟수를 체크해 주는 간단한 어플리케이션입니다. 하루에 담배를 2갑 정도 피우는 제 자신을 위해 이전부터 만들어 보고 싶었던 것이었습니다. 그동안 블로그도 못할 정도로 바빠서 늘 생각만 하고 있다가, 몇일전 시간을 내어 만들어 보았습니다.


흡연횟수가 늘어 날수록 캐릭터가 점점 망가지다가 설정한 목표를 넘어설 때 부터는 폐인 양이 되어 버립니다. 둥둥 떠다리는 + 버튼을 클릭하면 갯수가 늘어나며 간단한 에니메션이 있습니다.

사용자 삽입 이미지

통계에서는 시간/일/월/년별 통계를 볼 수 있도록 하였습니다. 알콜카운터도 만들어 볼려고 했는데 세면서 마시면 술 맛이 안날까봐 그만두었습니다.

'App Store' 카테고리의 다른 글

사전 어플리케이션  (0) 2009.05.01
아이폰 App - Action Counter  (26) 2009.04.30
스모킹 카운터 1.2 버그  (0) 2009.03.18
Smoking Counter 등록 완료  (64) 2009.03.03
10,000개 다다른 애플 App 스토어의 어플리케이션  (2) 2008.12.01
AND

이 부분에 대해서 방법을 찾고 있는데 현재는 미디어 플레이어의 rate를 설정하는 것처럼 실버라이트2에선 재생 속도를 변경하는 방법이 없는 것 같습니다. 꽁수로 재생시간을 조금씩 더 해보았는데 자연스럽지 않고 소리가 끊기면서 나와 옛날 비디오의 빨리감기를 보는 정도까지만 가능했습니다. 아래는 관련부분 소스입니다.

static double TIMER_INTERVAL = 300;
static double MOVE_MSECONDS = 10000;
static int MOVE_FF = 1;
static int MOVE_RW = -1;

public Page()
{
   
    /** 타이머 설정 */
    timerStoryboard.BeginTime = TimeSpan.Zero;
    timerStoryboard.Duration = new Duration(TimeSpan.FromMilliseconds(TIMER_INTERVAL));
    timerStoryboard.Completed += new EventHandler(timerCompleted);
}

private void ChangeSpeed()
{
    if (playSpeed == 0)
        return;

    double currentPos = mediaPlayer.Position.TotalMilliseconds;
    double newPos = currentPos + (MOVE_MSECONDS * playSpeed);
    double maxPos = mediaPlayer.NaturalDuration.TimeSpan.TotalMilliseconds;
    double downloadPos = Math.Floor(mediaPlayer.DownloadProgress * maxPos);

    mediaPlayer.Pause();
    
    /* 유효범위 검사 */
    if (newPos >= 0 && newPos < downloadPos)
    {
        mediaPlayer.Position = TimeSpan.FromMilliseconds(newPos);
        mediaPlayer.Play();

        timerStoryboard.Begin();
    }
    else
    {
        playSpeed = 0;
    }
}

private void timerCompleted(object sender, EventArgs e)
{
    ChangeSpeed();
}

/** 뒤로보기 클릭 */
private void btnRewind_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    playSpeed = MOVE_RW;
    ChangeSpeed();
}

/** 빨리보기 클릭 */
private void btnFast_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    playSpeed = MOVE_FF;
    ChangeSpeed();
}

ChangeSpeed()에서 mediaPlayer.Pause()와 mediaPlayer.Play()를 하지않고 빨리보기를 하면  어느정도 괜찮게 보이지만 역시 소리 부분은 부드럽게 재생이 안되네요. Position을 다시 설정하는 부분에 부하가 있어 밀리세컨드 단위의 세세한 제어는 힘든 것 같습니다. 또한 Progressive Download가 아닌 Streaming일 경우에는 저 방법으로는 대책이 없습니다. 저만 방법을 모르고 삽질중이라는 불길한 예감도 듭니다. ㅠㅠ

'기타' 카테고리의 다른 글

아이폰 3GS  (2) 2009.09.17
블로그를 또 다시 이전했습니다.  (4) 2009.05.11
sqlite3 둘러보기  (3) 2009.02.02
버그추적 시스템 Mantis 설치  (6) 2009.01.07
애플스크립트(AppleScript) 둘러보기  (5) 2009.01.06
AND

TableView 사용시 NSIndexPath에서 불특정하게 Instruments에서 메모리 누수가 감지되고는 합니다. 이전에도 이런 현상을 간혹 보기는 했지만, 혼자서 만들어 본 간단한 샘플이고 Instruments에 익숙하지 안다는 이유로 궁금증을 뒤로 하고 그냥 넘어 갔었습니다.


하지만 이번에 앱스토어에 올릴 어플리케이션을 준비하면서 또 위와 같은 문제를 만났습니다. 이번에는 그냥 넘어 갈 문제가 아니기 때문에 누수를 찾을려고 해보았습니다. 그러나 역시 찾지 못했습니다. 검색을 해보아도 비슷한 경우를 겪은 사람들은 많지만 딱히 해답은 없었습니다.

애플의 SimpleDrillDown이나 UICatalog와 같은 TableView를 사용하는 샘플에서도 이와 같은 누수가 감지됩니다. 애플의 담당자들도 실수를 할 수 있겠지만 이런 UI의 대표적인 샘플에서 정말 문제가 있었다면, 이에 관련된 업데이트가 그동안 있었을 것이라 생각이 됩니다.

또한 실제 디바이스에서 테스트를 하면 위와 같은 누수는 발생하지 않습니다. 이번에 2.2.1로 업그레이되면서 혹시나 해결되었나 했는데 마찬가지였습니다. 애플의 이에대한 공식적인 언급은 못보았지만, 잠정적으로 시뮬레이터의 버그이고 실제로 사용시에는 문제가 없다는 결론을 내렸습니다. 하지만 아직도 제가 무엇을 잘 못한 것은 아닌지 찜찜한 마음은 가시지 않네요. 혹시 원인이나 해결책을 아시는 분이 계신가요?

'iOS' 카테고리의 다른 글

cocos2d 개발환경 설정  (24) 2009.04.13
iPhone SDK 3.0 beta 2  (4) 2009.04.05
UIView에서 텍스트 출력  (10) 2009.01.13
iPhone 어플리케이션 개발을 위한 준비 - 4. 시작하기  (16) 2008.12.22
아이폰 SQLite3 샘플  (5) 2008.11.25
AND