0

phonegap の Media クラスを使用して、URL の形式がポート付きの IP である URL からオーディオをストリーミングしています。Androidでは正常に動作しており、サウンドが再生されています。iOS では再生されず、理由がわかりません。誰が私が間違っているのか教えてもらえますか? これが私のストリーミングの機能です。

function playAudio(src) {
    // Create Media object from src
    setAudioPosition("Please wait...");
    my_media = new Media(src, onSuccess, onError);

    // Play audio
    myMedia.play({ playAudioWhenScreenIsLocked : false })
    $('.jp-play').hide();
    $('.jp-pause').show();
    // Update my_media position every second
    if (mediaTimer == null) {
        mediaTimer = setInterval(function() {
            // get my_media position
            my_media.getCurrentPosition(
                // success callback
                function(position) {
                    if (position > -1) {
                        setAudioPosition("Playing");
                    }
                },
                // error callback
                function(e) {
                    console.log("Error getting pos=" + e);
                    setAudioPosition("Error: " + e);
                }
            );
        }, 1000);
    }
}

プロジェクトのxmlで、サーバーのIPをホワイトリストに追加しましたが、再び機能しません。どうすれば修正できますか?

4

2 に答える 2

0

数ヶ月前に同じ問題がありました.phonegapプレーヤーはiosでは動作しませんでしたが、androidでは動作しました.何をしたかは、私のプレーヤーをネイティブにして(目的c)、それをform de phonegap側(javascript)と呼ぶことでした.

プラグインを作ることで

- (void)play:(CDVInvokedUrlCommand *)command{

NSString* scr = [command.arguments objectAtIndex:0];

CDVPluginResult* pluginResult = nil;
NSString* javaScript = nil;

@try {

    if (scr != nil) {

        if (player.isPreparedToPlay) {


            player.contentURL = [NSURL URLWithString:scr];
            [player play];

        }else {


            MPMoviePlayerController* objplayer =[[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:scr]];

            self.player = objplayer;
            [self.player prepareToPlay];

            player.movieSourceType = MPMovieSourceTypeStreaming;
            player.view.hidden = YES;
            player.useApplicationAudioSession = YES;
            [player play];


        }
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
        javaScript = [pluginResult toSuccessCallbackString:@"respuesta"];
    }
} @catch (id exception) {
    pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_JSON_EXCEPTION messageAsString:[exception reason]];
    javaScript = [pluginResult toErrorCallbackString:@"respuesta con error"];
}

[self writeJavascript:javaScript];
}

その後、config.xml でプラグインを呼び出します。

次に、あなたのJavaScriptで

Cordova.exec(null, null, "playMusic", "Play", [url,url]);
于 2013-09-18T21:55:53.287 に答える