2011-03-06 5 views
3

WP7 장치에서 소리를 재생하는 방법을 더 잘 이해할 수 있도록 약간의 응용 프로그램을 만들고 있지만 장치에서 실제로 소리가 나지 않는 문제가 있습니다.MediaElement Windows Phone 7

나는 다음과 같은 코드가 있습니다 : test.mp3의 빌드 작업은 자원이다

<MediaElement x:Name="note1" Source="test.mp3" AutoPlay="False" /> 

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    note1.Source = new Uri("test.mp3", UriKind.Relative); 
    note1.Play(); 
} 

.

btn1_Click 메서드에 중단 점을 추가 할 때 note1.Play()에서 멈추는 것이 실제로 test.mp3을 재생하지만 중단 점이없는 디버그를 클릭하면 아무 것도 듣지 못할 때가 있습니다.

이 문제를 해결할 방법이 있습니까?

+0

나는 당신이 묘사 한대로 MP3를하는 데 아무런 문제가 없습니다. 버튼 클릭 후 수행중인 다른 작업이 있습니까? –

+0

문제는 내 소리가 1 초 밖에 걸리지 않는다고 생각합니다. MediaElement가 그 소리를 좋아하지 않는다고 생각합니다. 대신 SoundEffect를 사용했습니다. – Michael

답변

3

test.mp3의 빌드 작업을 콘텐츠로 설정해 보았습니까?

또한 전화를 인식하고 동기화를 완료 한 후 zune 소프트웨어를 닫고 wp7connect 도구를 사용하여 연결했습니다. wp7connect 도구에 대한 자세한 내용은 here을 참조하십시오. zune은 wp7 장치의 모든 미디어를 잠그고 미디어를 재생할 수 없지만 미디어 상태는 "종료됩니다". 당신이 그렇지 않으면 (이 MediaElement에 필요한 것 같다 당신이 매니페스트 (WMAppManifest.xml) 할 수있는 능력의 ID_CAP_MEDIALIB를 추가했는지 확인, 이벤트 MediaFailedMediaOpened, MediaEnded, DownloadProgressChanged, CurrentStateChanged 또한

2

BufferingProgressChanged을 미디어의 설정을 다음 시도 MediaFailed 핸들러에서 AG_E_NETWORK_ERROR를 얻습니다.)

0

종족 종류는 반드시 RelativeOrAbsolute 여야합니다.

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    note1.Source = new Uri("test.mp3", UriKind.RelativeOrAbsolute); 
    note1.Play(); 
} 
0

당신은 그것을()는 .Play를 호출하기 전에 확인 MediaElement에가 열려 확인해야합니다 - 당신이 MediaOpened 이벤트에 이벤트 수신기를 추가하여 수행 할 수 있습니다. Source 속성을 재 할당하기 전에 언제든지 .Stop()을 호출하는 것이 좋습니다. this thread for more details을 살펴보십시오.

1

내가 좋아하는 뭔가를 사용하여 ... 가깝지만 이상한 효과가 하나 개 이상의 오디오 항목에 대한 MediaElement를 추천 해달라고 : ("오디오/buzzer.wav"@)

스트림 스트림 = TitleContainer.OpenStream을;

 SoundEffect effect = SoundEffect.FromStream(stream); 
     FrameworkDispatcher.Update(); 
     effect.Play(); 

xna 프레임 워크를 사용하여 WAV 파일을 확인하십시오.

+0

이것은 정답입니다. 음악 플레이어에서 음악을 일시 중지하면 Windows 전화 시장에서 앱을 거부합니다. 버그가있는 mediaelement와이 작업을 거의 불가능합니다. –

0

이벤트 핸들러가 없으면이 문제를 해결할 수 없습니다. 아래에 언급 된대로하십시오.

<MediaElement x:Name="note1" Source="test.mp3" AutoPlay="False" /> 

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    note1.Source = new Uri("test.mp3", UriKind.Relative); 
    note1.MediaOpened += new RoutedEventHandler(note1_MediaOpened); 
} 

    void note1_MediaOpened(object sender, RoutedEventArgs e) 
    { 
     note1.Play(); 
    } 

이것은 완벽하게 작동합니다. 즐기십시오 ...