2012-11-01 7 views
1

나는 Windows Phone 개발자가 아니기 때문에 미리 지식 부족에 대해 사과드립니다.Windows Phone - 발신 번호 표시 응용 프로그램 개발

고객에게 제공하는 제품 중 하나는 발신자 번호 표시기입니다.

  1. 걸려 오는 전화를 검색 및 번호가 연락처에 발견되지 않는 경우 발신자 번호
  2. 를 얻을, 우리의 서버에 (하는 XML 인터페이스 HTTP 가져 오기 요청)
  3. 을 이름 검색을 수행 : 소프트웨어는 다음을 수행합니다 전화 우리는 안드로이드 응용 프로그램을 구현했습니다

(예 : 연락처 등에 결과를 저장하는 등, 다른 물건)

  • 을 울리는 동안
  • 의 이름이 화면에 표시, 우리의 서버에서 발견 된 경우 및 심비안 및 그것 wo 완벽하게. 이 응용 프로그램 유형이 Windows Phone에서도 가능한지 알고 싶습니다. 우리의 하청 업체에 따르면, 이전 버전에서는 그렇지 않았습니다. WP8에서 상황이 바뀌 었는지 정말 궁금합니다.

    내 질문 :

    1. 응용 프로그램은 백그라운드 프로세스로 실행 할 수 있습니까?
    2. 들어오는 호출이 백그라운드 프로세스에서 감지 할 수있는 이벤트를 실행합니까?
    3. 수신 전화에서 발신자 전화 번호를 실시간으로받을 수 있습니까?
    4. 수신 통화 중에 백그라운드에서 검색을 수행 할 수 있습니까?
    5. 전화가 걸려 올 때 화면에 아무 것도 표시 할 수 있습니까?

    내가 봤던 것으로부터, 나는 "불명예스러운"이벤트에 대한 언급 만하고, "콜"이벤트 또는 이와 유사한 것에 대해서는 언급하지 않았다. 이것은별로 유망하지는 않지만 실제 개발자로부터 듣고 싶습니다.

  • 답변

    1

    예 ("백그라운드 에이전트", http://www.jeffblankenburg.com/2011/11/25/31-days-of-mango-day-25-background-agents/).

    거기에서 시작한 다음 앱의 사양과 관련된보다 독립적 인 조사를 수행해야합니다.

    당 제프의 기사 :

    시작 Visual Studio 및 새 프로젝트를 만들 수 있습니다. Windows Phone 용 Silverlight에서 Windows Phone Application을 선택합니다. 이름을 "MyAgentApp"로 지정하십시오.

    이제 기본 응용 프로그램을 만들었습니다. 이 두 가지에 대한 책임을 져야합니다 :

    1) 배경 에이전트가 정보

    2) 시작 및 정지 백그라운드 에이전트 자체에

    살아야 배경 에이전트로 업데이트 할 수 있습니다 라이브 타일을 갖는 그 자신의 특별 프로젝트. 솔루션에 Windows Phone 예약 된 작업 에이전트를 선택하여 새 프로젝트를 추가합니다. 이름을 MyAgent로 지정하십시오. 이 프로젝트는 백그라운드에서 실행되고 라이브 타일을 업데이트 할 사용자 정의 코드를 포함합니다.

    마지막으로 중요한 것은 MyAgentApp 프로젝트로 이동하여 MyAgent에 대한 프로젝트 참조를 추가하는 것입니다. 이렇게하면 응용 프로그램 내에서 에이전트를 등록 할 수 있습니다. 또한이 항목이 WMAppManifest.xml에 자동으로 만들어진 항목인지 확인하십시오.

    <Tasks> 
         <DefaultTask Name="_default" NavigationPage="MainPage.xaml" /> 
         <ExtendedTask Name="BackgroundTask"> 
         <BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="MyAgent" Source="MyAgent" Type="MyAgent.ScheduledAgent" /> 
         </ExtendedTask> 
        </Tasks> 
    

    이제 모든 항목을 실제로 연결해야합니다.

    MainPage.xaml.cs를에서
    <StackPanel VerticalAlignment="Center"> 
         <Button Content="Start Background Agent" 
           Click="StartButton_Click"/> 
         <Button Content="Stop Background Agent" 
           Click="StopButton_Click"/> 
        </StackPanel> 
    

    , 와이어까지 버튼이 에이전트를 시작하고 중지 : MainPage.xaml을 열고 다음과 에이전트를 정지 다른 에이전트를 시작하는 두 개의 버튼 하나를 추가하고

    private const string TASK_NAME = "MyAgent"; 
    private void StartButton_Click(object sender, RoutedEventArgs e) 
    { 
        StartAgent(); 
    } 
    
    private void StopButton_Click(object sender, RoutedEventArgs e) 
    { 
        StopAgentIfStarted(); 
    } 
    
    private void StartAgent() 
    { 
        StopAgentIfStarted(); 
    
        PeriodicTask task = new PeriodicTask(TASK_NAME); 
        task.Description = "This is our custom agent for Day 25 - Background Agents"; 
        ScheduledActionService.Add(task); 
    #if DEBUG 
        // If we're debugging, attempt to start the task immediately 
        ScheduledActionService.LaunchForTest(TASK_NAME, new TimeSpan(0, 0, 1)); 
    #endif 
    } 
    
    private void StopAgentIfStarted() 
    { 
        if (ScheduledActionService.Find(TASK_NAME) != null) 
        { 
         ScheduledActionService.Remove(TASK_NAME); 
        } 
    } 
    

    사용자 지정 에이전트를 만들려면 새로운 PeriodicTask가 생성됩니다. 그런 다음 에이전트를 찾고 중지 할 때이 이름을 식별자로 사용합니다. 또한 PeriodicTask.Description을 지정했음을 주목하십시오 - 이것은 필수 필드이며 Settings | 배경 응용 프로그램 이름의 작업. MyAgent 프로젝트에서

    오픈 ScheduledAgent.cs 다음과 같은 코드를 추가합니다

    protected override void OnInvoke(ScheduledTask task) 
    { 
        UpdateAppTile(GetLastUpdatedTimeMessage()); 
    } 
    private string GetLastUpdatedTimeMessage() 
    { 
        return string.Format("Last Updated: {0}", DateTime.Now); 
    } 
    
    private void UpdateAppTile(string message) 
    { 
        ShellTile appTile = ShellTile.ActiveTiles.First(); 
        if (appTile != null) 
        { 
         StandardTileData tileData = new StandardTileData 
         { 
          BackContent = message 
         }; 
    
         appTile.Update(tileData); 
        } 
    

    }

    ScheduledAgent가 오버라이드 (override)하는 하나 개의 중요한 방법이있다 - OnInvoke합니다. 여기서 에이전트가 백그라운드 작업을 실행합니다. 작업이 완료되어 더 이상 에이전트를 실행하지 않아도되면 NotifyComplete()를 호출하여 작업이 성공적으로 완료되었음을 알리거나 Abort()를 호출하여 작업 취소를 알릴 수 있습니다. 간격을두고 작업을 계속 실행하려면 간단히 하나도 호출하지 마십시오. 여기서 수행중인 작업입니다.

    관련 문제