안 드 로 이 드 아이 폰 모 바 일 앨범

4217 단어 Unity3D
직접 측정 가능:
http://www.taidous.com/bbs/forum.php?mod=viewthread&tid=24476
요약:
첫 번 째 단계: 새 안 드 로 이 드 프로젝트, 유 니 티 class. jar 패키지 가 져 오기 (유 니 티 에서 classes. jar 를 찾 습 니 다. 구체 적 인 경 로 는 유 니 티 \ \ Editor \ Data \ \ PlaybackEngines \ \ androidplayer \ release \ bin \ classes. jar), 저장 함 수 를 작성 합 니 다.
package com.zz.cutimage;


import java.io.File;
import java.io.FileNotFoundException;
import java.lang.reflect.Field;
 
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.provider.MediaStore;
import android.util.Log;


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


import com.unity3d.player.UnityPlayerActivity;


public class MainActivity extends UnityPlayerActivity {
         
//        Button btn ;
//        @Override
//        protected void onCreate(Bundle savedInstanceState) {
//                super.onCreate(savedInstanceState);
//                setContentView(R.layout.main);
//                btn = (Button)findViewById(R.id.btn);
//                btn.setOnClickListener(new OnClickListener() {
//                        
//                        @Override
//                        public void onClick(View arg0) {
//                                
//                                saveImageToGallery(MainActivity.this, "Environment.getExternalStorageDirectory().getPath() + File.separator + taidous/a.jpg");
//                        }
//                });
//        }
         
        public static void SaveImageToGallery(String path) 
        {
            try{
                Class> m_ClassUnityPlayer = Class.forName("com.unity3d.player.UnityPlayer");
                Field m_CurrentActivityFieldUnityPlayer = m_ClassUnityPlayer.getField("currentActivity");
                Activity currentActivity = (Activity) m_CurrentActivityFieldUnityPlayer.get(m_ClassUnityPlayer);
                Context context = currentActivity;
                File file = new File(path);
                Log.i("SaveImageToGallery", file.getPath() + "--" + file.length());
                String url = "";
                //             
                try {
                        url = MediaStore.Images.Media.insertImage(context.getContentResolver(),
                                            file.getAbsolutePath(), file.getName(), null);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
                Log.i("SaveImageToGallery", file.getPath() + "--" + file.length());
                //         
                context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getPath())));
            }catch(Exception e)
            {
                     Log.e("SaveImageToGallery", e.getMessage());
            }
        }
}

두 번 째 부분: jar 가방 을 유 니 티 로 내 보 냅 니 다. 유 니 티 는 Androiddminfest 에 가방 을 포함 합 니 다.
            

세 번 째 부분: 유 니 티 스 크 립 트 에서 호출:
public void OnClickSavePhoto()
{
	var bytes = photoTex2d.EncodeToPNG();
	string path = Application.persistentDataPath + "/" + System.DateTime.Now.ToLongTimeString() + ".png";
#if UNITY_EDITOR
	File.WriteAllBytes(Application.dataPath + "/SavedScreen.png", bytes);
#elif UNITY_ANDROID || UNITY_IPHONE
	File.WriteAllBytes(path, bytes);
#endif
	sharePhotoPanel.SetActive(false);


#if UNITY_ANDROID
	try
	{
		AndroidJavaClass testActivityClass = new AndroidJavaClass("com.zz.cutimage.MainActivity");
		Debug.LogWarning("screenShot in android");
		if (testActivityClass != null)
		{
			Debug.LogWarning("testActivityClass note null");
			object[] objs = new object[] { path };
			testActivityClass.CallStatic("SaveImageToGallery", objs);
		}
	}
	catch (System.Exception e)
	{
		Debug.LogError(e);
	}
#endif
}

좋은 웹페이지 즐겨찾기