05 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【Unity】iOSのカメラロールへのアクセス 

こんにちは。
大坂です。

今週も小ネタ。
iOSのカメラロールへのアクセスについてです。

まずは、こんな感じで「.mm」ファイルを作成します。
#import <Foundation/Foundation.h>
#import <AssetsLibrary/AssetsLibrary.h>
#import <AVFoundation/AVFoundation.h>

/*
指定したパスの画像をカメラロールに保存するのに利用するネイティブコード。
*/
// 指定したパスの画像をカメラロールに保存する。
extern "C" void _ImageToAlbum (const char* path)
{
UIImage *image = [UIImage imageWithContentsOfFile:[NSString stringWithUTF8String:path]];
ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease];
NSMutableDictionary *metadata = [[[NSMutableDictionary alloc] init] autorelease];
[library writeImageToSavedPhotosAlbum:image.CGImage metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {
// 書き込み終了後、Unity側へコールバック。
UnitySendMessage("{呼び出すオブジェクト名}", "{呼び出すメソッド名}", [error.description UTF8String]);
}];
}
作成した「.mm」はUnityの「Plugins/iOS」に突っ込んでおきましょう。

次に呼び出す側です。使う部分だけですが…。
#if UNITY_IPHONE
// クラスの最初でインポート
[DllImport("__Internal")]
private static extern void _ImageToAlbum (string path);
#endif

public void CopyImage() {
#if UNITY_IPHONE
// 呼び出し部分
_ImageToAlbum ({ファイルパス});
#endif
}

// コールバック用のメソッド
void CallbackImageToAlbum (string error) {
// 処理
}
基本これだけで行けますね。
アプリで呼び出すメソッドを実行したら「カメラロールへのアクセス」のポップアップが表示されるので、許可すればカメラロールに指定したパスのファイルが保存されているはずです!

「.mm」で「AssetsLibrary」を使用しているのでXcodeとかでフレームワークの追加をお忘れなく!

ではこれにて。
スポンサーサイト

Category: 開発日記(Unity)

tb 0 : cm 0   

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://halcyonsystemblog.blog.fc2.com/tb.php/135-8397613e
この記事にトラックバックする(FC2ブログユーザー)