2016-08-22 3 views
0

Game Maker Studio Android AppのJava拡張機能を作成しようとしています。Image Game Maker StudioのJava拡張機能を使用してAndroid用に選択

私はオンラインチュートリアルのコードを使用しようとしましたが、GMSは別のアプローチを使用しています。私はGMS拡張チュートリアルに従っていると、それは仕事をdoesntの

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

あなたのJavaファイルにいくつかの問題がありますが、インテントを使用している場合は、インテントを有効にしていることを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); 
     } 
    } 
} 
関連する問題