Unity3d截圖保存到Android相冊的實現


Unity3d截圖保存到Android相冊的實現
-----------------------------ultrasoon 季風原創---------------------------------------

1.Unity3d場景中先加入屏幕抓圖功能:

Application.CaptureScreenshot("Screenshot.png");

 


這樣Screenshot.png就存到了你的app沙盒中,請檢查/sdcard/Android/data/com.ultrasoon.MyApp/,這個是我的app沙盒路徑.
這個是第一步,之后還要保存到相冊中。

2.unity中點擊保存到相冊按鈕
unity部分代碼:

 1 public static AndroidJavaClass plugin;
 2 
 3 
 4 void Awake ()
 5 {
 6 
 7     if(Application.platform == RuntimePlatform.Android ) {
 8         plugin = new AndroidJavaClass("com.ultrasoon.MyApp.Binding");
 9     }
10 }
11 void OnGUI()
12 {
13     if (GUI.Button(new Rect(20, 20, 100, 5), "save"))
14     {
15         //保存到相冊,調用自己寫的Binding插件
16         plugin.CallStatic("savebuttonClicked");
17 
18     }
19 }

 


3.Binding插件的實現.import對應的package

Binding.cs部分代碼:

 1 public static Context context;
 2 
 3 // 保存到相冊
 4 public static void savebuttonClicked() {
 5 
 6     //取得你XXXXXXXActivity的context.用自己的,不能用this,插件中調用靜態的方法
 7     context = XXXXXXXActivity.getApplicationContext();
 8 
 9     XXXXXXXActivity.runOnUiThread(new Runnable() {
10         public void run() {
11             // file:///sdcard/Android/data/com.ultrasoon.MyApp/files/Screenshot.png
12             Bitmap bitmap = Binding
13                     .getDiskBitmap("/sdcard/Android/data/com.ultrasoon.MyApp/files/Screenshot.png");
14             if (bitmap != null) {
15 
16                 MediaStore.Images.Media.insertImage(
17                         context.getContentResolver(), bitmap, "myPhoto", "");
18                 context.sendBroadcast(new Intent(
19                         Intent.ACTION_MEDIA_MOUNTED,
20                         Uri.parse("file://"
21                                 + Environment.getExternalStorageDirectory())));
22                 Toast.makeText(
23                         context,
24                         " 恭喜你!照片已保存到你的相冊中! ", Toast.LENGTH_SHORT).show();
25             }
26         }
27     });
28 
29 }
30 
31 // 讀圖
32 public static Bitmap getDiskBitmap(String url) {
33 
34     Bitmap bitmap = null;
35     try {
36         File file = new File(url);
37         if (file.exists()) {
38             bitmap = BitmapFactory.decodeFile(url);
39 
40         }
41     } catch (Exception e) {
42 
43     }
44     return bitmap;
45 }

 

4.編譯打包插件Binding,打包成jar,復制到unity的Asserts中下面的plugins目錄里面。


OK了。
具體細節希望自己摸索!


-----------------------------ultrasoon 季風原創---------------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM