2

私は、訪問者が正面カメラを使用してビデオを録画し、外部モニターをターゲットにしているカメラ ロール内の既存のビデオを表示できる iPad キオスク タイプのアプリケーションを作成しています。私はちょうど XCode を学んでいて、iOS 5 を対象とした Xcode 4.4.1 で作業しています。 UIImagePicker を使用します。

1 つの例外を除いて、すべてが希望どおりに機能しています。外部ディスプレイと iPad を希望どおりに切り替えることができません。ユーザーがビデオを録画すると、iPad でフルスクリーンになります。それは問題ありませんが、記録を停止した後、ビデオは承認のためにすぐに外部ディスプレイに送信され、プレースホルダー画像が UIPopover に残されます。私が見たい/やりたいことは、iPad でビデオ プレビューを全画面表示に保つか、ビデオを UIPopover に向けることです。

その理由は、ユーザーが iPad にアクセスしている場所から外部ディスプレイを簡単に見ることができないためです。したがって、彼らは実際には見えないものを承認する ([使用] をクリックする) よう求められています。iPadに保存しておく方がはるかに良いでしょう。以下のコードは、録音を許可するために使用したものです。

ユーザーがライブラリからビデオを選択して外部モニターに表示するようにしたいのですが、それがデフォルトの動作であるため、正常に動作します。

これまでに見つけた最も近い答えは次のとおりです:既存の UIPopoverController 内の UIImagePickerController

外部ディスプレイを無効にする、またはビデオ プレビューが送信されないようにする簡単な方法はありますか?

   - (IBAction)useCameraRoll:(id)sender
{
    if([self.popoverController isPopoverVisible]) {
        [self.popoverController dismissPopoverAnimated:YES];
    } else {
        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
        {

            UIImagePickerController *imagePicker =
            [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
            imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeMovie, nil];

            imagePicker.allowsEditing = NO;

            self.popoverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
            //self.popoverController = [[UIPopoverController alloc] setContentViewController:animated];

            self.popoverController.delegate = self;

            [self.popoverController
             presentPopoverFromBarButtonItem:sender  permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

            newMedia = NO;


        }
    }
}
4

1 に答える 1

0

偶然にも、私は iPad で同様のキオスク アプリを開発しています。私の場合、拡張現実を利用して関連するコンテンツを外部ディスプレイに表示します。拡張現実体験の構成パネルとして iPad の画面を使用します。

これにアプローチするための最良の方法は、ディスプレイごとに2つのUIScreenを備えた個別のウィンドウを使用することです。これにより、エクスペリエンスを適切に作成できます。このアプローチを既に使用しているかどうかはわかりませんが、使用していない場合は、これが最適です。

開始するには、 ExternalDisplayコード サンプルを読むことができます。抜粋から:

iOS 開発者ライブラリの ExternalDisplay サンプル コードから:

外部ディスプレイにコンテンツを表示するには、次の手順を実行します。

  1. UIScreen クラスの screens クラス メソッドを使用して、外部ディスプレイが利用可能かどうかを判断します。

  2. 外部スクリーンが利用可能な場合は、スクリーン オブジェクトを取得し、その availableModes プロパティの値を調べます。このプロパティには、画面でサポートされている構成が含まれています。

  3. 目的の解像度に対応する UIScreenMode オブジェクトを選択し、それを画面オブジェクトの currentMode プロパティに割り当てます。

  4. コンテンツを表示する新しいウィンドウ オブジェクト (UIWindow) を作成します。

  5. screen オブジェクトを新しいウィンドウの screen プロパティに割り当てます。

  6. ウィンドウを構成します (ビューを追加するか、OpenGL ES レンダリング コンテキストを設定します)。

  7. ウィンドウを表示します。

また、UIScreenのドキュメントも非常に役立ちます。

于 2012-09-05T18:14:29.460 に答える