2014-01-06 5 views
13

Ich habe Probleme, wenn ich ein Photosphere-Bild mit meiner Android-Anwendung öffnen möchte. In der Tat kann ich es öffnen, aber die Anwendung zeigt eine Art Vorschau der Photosphäre (es scrollt das Bild von links nach rechts). Ich möchte, dass meine Anwendung öffnet die Photosphäre mit dem Acceloremeter-Modus (der Modus, den wir brauchen, um das Telefon zu drehen, um das gesamte Bild zu zeigen), ohne auf die Schaltfläche unten rechts klicken.So stellen Sie den Photosphere-Modus ein, wenn das Panorama geöffnet wird Android

Ich benutze diesen Code, um das Panorama zu öffnen:

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setComponent(new ComponentName("com.google.android.gms", "com.google.android.gms.panorama.PanoramaViewActivity")); 
intent.setData(Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/DCIM/Camera/PANO_20131209_130755.jpg")); 
startActivity(intent); 

Vielen Dank im Voraus,

+0

'„file: //“+„/ sdcard' - das ist schlecht Ansatz Siehe 'Environment' Klasse –

+0

Ja, ich gewusst, dass ich dies nur für eine harte Probe gestellt – benoitm76

+0

den Code von Schaltflächen, die Ihre Bild scrollt bitte... – ProllyGeek

Antwort

3

Hoffe, dass die folgenden unten hilft:

public class YourActivity extends Activity implements ConnectionCallbacks, 
     OnConnectionFailedListener { 

private GoogleApiClient gacClient; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    gacClient= new GoogleApiClient.Builder(this, this, this) 
      .addApi(Panorama.API) 
      .build(); 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    gacClient.connect(); 
} 

@Override 
public void onConnected(Bundle connectionHint) { 
    Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/DCIM/Camera/PANO_20131209_130755.jpg"); 

    Panorama.PanoramaApi.loadPanoramaInfo(gacClient, uri).setResultCallback(
      new ResultCallback<PanoramaResult>() { 
     @Override 
     public void onResult(PanoramaResult result) { 
      Intent i; 
      if (result.getStatus().isSuccess() && (i = result.getViewerIntent()) != null) { 
       startActivity(i); 
      } else { 
       // Handle unsuccessful result 
      } 
     } 
    }); 
} 

@Override 
public void onConnectionSuspended(int cause) { 
    // Handle connection being suspended 
} 

@Override 
public void onConnectionFailed(ConnectionResult status) { 
    // Handle connection failure. 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    gacClient.disconnect(); 
} 
} 

einen Link unten und Beispiel-Bibliothek ist zu Verwenden Sie PhotoSphere ohne Google+:

https://github.com/kennydude/photosphere

Intent i = new Intent(MainActivity.this, SphereViewer.class); 
       i.setData(Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/DCIM/Camera/PANO_20131209_130755.jpg")); 
       startActivity(i); 

Photosphere verwendet Gyroskop und Beschleunigungsmesser nicht, aber ich bin sicher, dass Sie die zweite Lösung verwenden können und Ihre eigenen Beschleunigungsmesser Funktionalität hinzuzufügen.

+0

OP sagte, dass "ich möchte, dass meine Anwendung die Photosphäre öffnet mit dem Acceloremeter - Modus (der Modus, den wir brauchen, um das Telefon zu drehen, um das gesamte Bild zu zeigen), ohne auf den Knopf unten rechts zu klicken. "Sieht so aus, als ob Ihre Lösung die Photosphäre im Internet öffnet Vorschaumodus, nicht Beschleunigungsmodus. – aga

+0

Siehe den bearbeiteten Teil unten. –

+1

Ich meinte, dass OP wollte das Panorama in dem Modus zu starten, zitiere, "der Modus, den wir brauchen, um das Telefon zu drehen, um das gesamte Bild zu zeigen, ohne auf die Schaltfläche unten rechts klicken". Ihre Lösung öffnet das Panorama im Vorschaumodus, genau wie die OP-Lösung (der einzige Unterschied besteht darin, dass Ihre Lösung an die neuere API angepasst ist). – aga