package io.nextop.demo.flip; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.MenuItem; import io.nextop.Id; public class FlipActivity extends Activity { public static final String ACTION_RECORD = "io.nextop.demo.RECORD"; public static Intent viewIntent(Context context, Id id) { Intent intent = new Intent(context, FlipActivity.class); intent.setAction(Intent.ACTION_VIEW); intent.setData(new Uri.Builder().path(id.toString()).build()); return intent; } public static Intent recordIntent(Context context, Id id) { Intent intent = new Intent(context, FlipActivity.class); intent.setAction(ACTION_RECORD); intent.setData(new Uri.Builder().path(id.toString()).build()); return intent; } Id flipId; Flip flip; FlipAdapter flipAdapter; ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); flipId = Id.valueOf(intent.getData().getPath()); String action = intent.getAction(); boolean startRecording; if (Intent.ACTION_VIEW.equals(action)) { startRecording = false; } else if (ACTION_RECORD.equals(action)) { startRecording = true; } else { throw new IllegalArgumentException(); } ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); setContentView(R.layout.activity_flip); flip = (Flip) getApplication(); flipAdapter = new FlipAdapter(); viewPager = (ViewPager) findViewById(R.id.pager); viewPager.setAdapter(flipAdapter); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int i) { switch (i) { case 0: stopRecording(); break; case 1: startRecording(); break; default: throw new IllegalArgumentException(); } } @Override public void onPageScrolled(int i, float v, int i1) { // Do nothing } @Override public void onPageScrollStateChanged(int i) { // Do nothing } }); if (startRecording) { // jump viewPager.setCurrentItem(1, false); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } } // void setIntro(String intro) { // flip.getFlipInfoVmm().setIntro(flipId, intro); // } void startRecording() { viewPager.setCurrentItem(1, true); ((FlipFragment) flipAdapter.getItem(0)).onStartRecording(); ((RecordFragment) flipAdapter.getItem(1)).onStartRecording(); } void stopRecording() { viewPager.setCurrentItem(0, true); ((FlipFragment) flipAdapter.getItem(0)).onStopRecording(); ((RecordFragment) flipAdapter.getItem(1)).onStopRecording(); } class FlipAdapter extends FragmentPagerAdapter { FlipFragment flipFragment = FlipFragment.newInstance(flipId); RecordFragment recordFragment = RecordFragment.newInstance(flipId); FlipAdapter() { super(getFragmentManager()); } @Override public int getCount() { return 2; } @Override public Fragment getItem(int i) { switch (i) { case 0: return flipFragment; case 1: return recordFragment; default: throw new IndexOutOfBoundsException(); } } } }