2014-01-06 1 views
13

У меня возникла проблема, когда я хочу открыть фотографию фотосферы с помощью приложения для Android. Действительно, я могу открыть его, но приложение показывает своего рода предварительный просмотр фотосферы (он прокручивает изображение слева направо). Я хочу, чтобы мое приложение открыло фотосферу в режиме ускорителя (режим, который нам нужен, чтобы повернуть телефон, чтобы показать все изображение), не нажимая кнопку внизу справа.Как установить режим фотосферы при открытой панораме Android

Я использую этот код, чтобы открыть панораму:

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

Спасибо заранее,

+0

'' файл: // «+»/sdcard' - это плохой подход. См. Класс «Среда» –

+0

Да, я знаю. Я просто поместил это для теста. – benoitm76

+0

предоставил код кнопок, который прокручивает изображение – ProllyGeek

ответ

3

Надежда ниже следуя подсказкам:

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

Ниже ссылки и пример библиотеки использование PhotoSphere без 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); 

фотосферы использует гироскоп и акселерометр не, однако я уверен, что вы можете использовать второе решение и добавить свои собственные функции акселерометра.

+0

OP сказал, что «я хочу, чтобы мое приложение открыло фотосферу с режимом ускорителя (режим, который нам нужен, чтобы повернуть телефон, чтобы показать весь рисунок), не нажимая кнопку внизу справа. «Похоже, ваше решение открывает фотосферу в режим предварительного просмотра, а не режим акселерометра. – aga

+0

См. Отредактированную часть внизу. –

+1

Я имел в виду, что OP хотел запустить панораму в режиме, который, цитируя, «режим, который нам нужен, чтобы повернуть телефон, чтобы показать всю картинку, не нажимая кнопку внизу справа». Ваше решение открывает панораму в режиме предварительного просмотра, точно так же, как решение OP (единственное отличие в том, что ваше решение адаптировано к более новому API). – aga