2016-08-22 2 views
0

Game Maker Studio Android App 용 Java 확장 프로그램을 만들려고합니다.이미지 Game Maker Studio에서 Java Extension을 사용하여 Android 용을 선택하십시오.

온라인 자습서의 코드를 사용하려고했지만 GMS는 다른 접근 방식을 사용하고 작동하지 않습니다. 나는 GMS 확장 튜토리얼을 따라하고 그 일을 나던

package ${YYAndroidPackageName}; 

//Basic imports 
import android.util.Log; 
import java.lang.String; 
import java.lang.String; 

import android.app.Activity; 
import android.content.Intent; 
import java.net.MalformedURLException; 
import java.net.URI; 
import java.net.URISyntaxException; 
import java.net.URL; 

//Import Game Maker classes 
import ${YYAndroidPackageName}.R; 
import com.yoyogames.runner.RunnerJNILib; 
import ${YYAndroidPackageName}.RunnerActivity; 

public class pickimage extends Activity { 

    public static final int PICK_IMAGE = 1; 
    private static final int EVENT_OTHER_SOCIAL = 70; 

    public void selectimage() 
    { 
     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE); 
     int dsMapIndex = RunnerJNILib.jCreateDsMap(null, null, null); 
     RunnerJNILib.DsMapAddString(dsMapIndex, "type", "pickeropened"); 
     RunnerJNILib.DsMapAddDouble(dsMapIndex, "argument0", 2); 
     RunnerJNILib.DsMapAddDouble(dsMapIndex, "argument0", 3); 
     RunnerJNILib.CreateAsynEventWithDSMap(dsMapIndex, EVENT_OTHER_SOCIAL); 
    } 

    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     URI selectedImageUri = null; 
     if (resultCode == RESULT_OK) { 
      if (requestCode == SELECT_PICTURE) { 
       selectedImageUri = new URI(data.getData()); 
       //String selectedImagePath = getPath(selectedImageUri); 
       //Log.i("yoyo", selectedImagePath); 
       //return selectedImagePath; 
    int dsMapIndex = RunnerJNILib.jCreateDsMap(null, null,null); 
    RunnerJNILib.DsMapAddString(dsMapIndex, "type", "imagepath"); 
    RunnerJNILib.DsMapAddString(dsMapIndex, "path", selectedImagePath); 
    RunnerJNILib.DsMapAddString(dsMapIndex, "path", "boo"); 
    RunnerJNILib.CreateAsynEventWithDSMap(dsMapIndex, EVENT_OTHER_SOCIAL); 
      } 
     } 
    } 

    /** 
    * helper to retrieve the path of an image URI 

    public String getPath(Uri uri) { 
      // just some safety built in 
      if(uri == null) { 
       // TODO perform some logging or show user feedback 
       return null; 
      } 
      // try to retrieve the image from the media store first 
      // this will only work for images selected from gallery 
      String[] projection = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = managedQuery(uri, projection, null, null, null); 
      if(cursor != null){ 
       int column_index = cursor 
       .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
       cursor.moveToFirst(); 
       return cursor.getString(column_index); 
      } 
      // this is our fallback here 
      return uri.getPath(); 
    }*/ 

} 

: 나는 아래의 코드를 사용하고

. 여기에 콘솔에서 일부 오류 사항은 다음과 같습니다 제가 구현하기 위해 찾고 무엇

:com.companyname.Test_Image_Chooser:compileReleaseJavaWithJavacF:\GM\Cache\Test_Image_Chooser\Android\Default\com.companyname.Test_Image_Chooser\src\main\java\com\companyname\Test_Image_Chooser\pickimage.java:41: error: cannot find symbol 
      if (requestCode == SELECT_PICTURE) { 
          ^
    symbol: variable SELECT_PICTURE 
    location: class pickimage 
F:\GM\Cache\Test_Image_Chooser\Android\Default\com.companyname.Test_Image_Chooser\src\main\java\com\companyname\Test_Image_Chooser\pickimage.java:42: error: incompatible types: Uri cannot be converted to String 
       selectedImageUri = new URI(data.getData()); 
                ^
F:\GM\Cache\Test_Image_Chooser\Android\Default\com.companyname.Test_Image_Chooser\src\main\java\com\companyname\Test_Image_Chooser\pickimage.java:48: error: cannot find symbol 
    RunnerJNILib.DsMapAddString(dsMapIndex, "path", selectedImagePath); 
                ^
    symbol: variable selectedImagePath 
    location: class pickimage 
Note: Some input files use or override a deprecated API. 
* What went wrong: 
Execution failed for task ':com.companyname.Test_Image_Chooser:compileReleaseJavaWithJavac'. 

는 사용자가 파일을 선택하고,이 네이티브 이미지 선택기 대화 상자를 엽니, 사용자가 응용 프로그램에서 버튼을 누르면입니다. 그런 다음 사용자가 다른 버튼을 누르면 앱이 선택한 이미지의 전체 경로를 가져온 다음 내 서버에 업로드합니다.

Im new to Java :)

아무도 도와 줄 수 있습니까?

답변

0

자바 파일에 몇 가지 문제점이 있습니다. 인 텐트를 사용할 때 jnirunner에 의도를 활성화했다는 사실을 알려야하며 여기에 여분의 불필요한 인수가 있고 기타 여분의 항목이 있으므로 코드 부분

startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE); 
int dsMapIndex = RunnerJNILib.jCreateDsMap(null, null, null); 
    RunnerJNILib.DsMapAddString(dsMapIndex, "type", "pickeropened"); 
    RunnerJNILib.DsMapAddDouble(dsMapIndex, "argument0", 2); 
    RunnerJNILib.DsMapAddDouble(dsMapIndex, "argument0", 3); 
    RunnerJNILib.CreateAsynEventWithDSMap(dsMapIndex, EVENT_OTHER_SOCIAL); 
는 주자에게 통보하고,이 때 비동기 이벤트를 호출하지 않습니다하기 전에

단순히 더 같이하고, 커넥터 문을 가져야한다 : 당신의 onActivityResult를 코드에서

RunnerActivity.CurrentActivity.startActivityForResult(intent, PICK_IMAGE); 

그래서 당신 중요한 부분을 주석 처리했다. 비동기 이벤트가 필요로하는 정보를 얻지 못하고있다, 거기에 몇 가지 여분의 물건과는 다른 출력 변수로 두 번 언급 한 "경로"코드 라인, 거기에 너무 그래서 코드는이

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    URI selectedImageUri = null; 
    if (resultCode == RESULT_OK) { 
     if (requestCode == SELECT_PICTURE) { 
      selectedImageUri = new URI(data.getData()); 
      //String selectedImagePath = getPath(selectedImageUri); 
      //Log.i("yoyo", selectedImagePath); 
      //return selectedImagePath; 
      int dsMapIndex = RunnerJNILib.jCreateDsMap(null, null,null); 
      RunnerJNILib.DsMapAddString(dsMapIndex, "type", "imagepath"); 
      RunnerJNILib.DsMapAddString(dsMapIndex, "path", selectedImagePath); 
      RunnerJNILib.DsMapAddString(dsMapIndex, "path", "boo"); 
      RunnerJNILib.CreateAsynEventWithDSMap(dsMapIndex, EVENT_OTHER_SOCIAL); 
     } 
    } 
} 

이 될한다

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(int requestCode, int resultCode, Intent data) 
    if (resultCode == RESULT_OK) { 
     if (requestCode == PICK_IMAGE) { 
      String path = data.getData().toString()); 
      Log.i("yoyo", path); 
      int dsMapIndex = RunnerJNILib.jCreateDsMap(null, null,null); 
      RunnerJNILib.DsMapAddString(dsMapIndex, "type", "imagepath"); 
      RunnerJNILib.DsMapAddString(result, "selectedImageUri", path); 
      RunnerJNILib.CreateAsynEventWithDSMap(dsMapIndex, EVENT_OTHER_SOCIAL); 
     } 
    } 
}