2016-08-22 2 views
0

Ich versuche, eine Java-Erweiterung für eine Game Maker Studio Android App zu machen.Bild Wählen Sie Für Android mit Java-Erweiterung in Game Maker Studio

Ich habe versucht, Code aus Online-Tutorials zu verwenden, aber GMS verwendet einen anderen Ansatz und ich kann es nicht zum Laufen bringen.

ich den Code unten bin mit:

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(); 
    }*/ 

} 

ich die GMS Erweiterung Tutorial befolgt haben und es funktioniert nicht. Hier sind einige Fehlermeldungen von der Konsole:

: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'. 

Was ich zu implementieren bin auf der Suche nach ist Benutzer auf eine Schaltfläche in App drückt, das Mutterbild Picker Dialog öffnet, Benutzer eine Datei auswählt. Dann drückt der Benutzer eine andere Taste und die App bekommt den vollständigen Pfad des ausgewählten Bildes und dann lade ich es auf meinen Server hoch.

Im neu zu Java :)

Kann jemand helfen?

Antwort

0

Ich sehe einige Probleme in Ihrer Java-Datei, wenn Sie Intents verwenden müssen Sie den jnirunner mitteilen, dass Sie die Absicht aktivieren, und Sie haben auch ein extra unnötiges Argument drin und andere Extras, so diesen Teil Ihres Codes

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); 

einfach mehr so ​​aussehen sollte, und einen Stecker Aussage hat, bevor er den Läufer zu melden, und das Asynchron-Ereignis nicht zu diesem Zeitpunkt nennen:

RunnerActivity.CurrentActivity.startActivityForResult(intent, PICK_IMAGE); 

und so in Ihrem onActivityResult Code, den Sie haben den wichtigen Teil von auskommentiert der Code, so die Asynchron-Ereignis wird es braucht nicht die Informationen bekommen, und es gibt einige zusätzliche Sachen drin und der „Weg“ Codezeile Sie zweimal mit unterschiedlichen Ausgangsgrößen angegeben haben, so dass diese

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); 
     } 
    } 
} 

sollte dies werden

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); 
     } 
    } 
} 
Verwandte Themen