diff options
Diffstat (limited to 'sample/src/main/java')
| -rw-r--r-- | sample/src/main/java/example/zxing/MainActivity.java | 6 | ||||
| -rw-r--r-- | sample/src/main/java/example/zxing/TabbedScanning.java | 175 |
2 files changed, 117 insertions, 64 deletions
diff --git a/sample/src/main/java/example/zxing/MainActivity.java b/sample/src/main/java/example/zxing/MainActivity.java index 23ecc666..79f74ec4 100644 --- a/sample/src/main/java/example/zxing/MainActivity.java +++ b/sample/src/main/java/example/zxing/MainActivity.java @@ -16,6 +16,7 @@ import android.widget.Toast; import com.google.zxing.client.android.Intents; import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; +import com.journeyapps.barcodescanner.CameraPreview; public class MainActivity extends AppCompatActivity { @@ -78,6 +79,11 @@ public class MainActivity extends AppCompatActivity { integrator.initiateScan(); } + public void tabs(View view) { + Intent intent = new Intent(this, TabbedScanning.class); + startActivity(intent); + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); diff --git a/sample/src/main/java/example/zxing/TabbedScanning.java b/sample/src/main/java/example/zxing/TabbedScanning.java index f1db04bd..0818c1d9 100644 --- a/sample/src/main/java/example/zxing/TabbedScanning.java +++ b/sample/src/main/java/example/zxing/TabbedScanning.java @@ -1,24 +1,23 @@ package example.zxing; -import android.app.Activity; -import android.app.ActionBar; -import android.app.FragmentTransaction; - -import android.app.Fragment; -import android.app.FragmentManager; -import android.support.v13.app.FragmentPagerAdapter; -import android.support.v4.view.ViewPager; import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.ViewPager; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; +import com.journeyapps.barcodescanner.CameraPreview; +import com.journeyapps.barcodescanner.DecoratedBarcodeView; -public class TabbedScanning extends Activity implements ActionBar.TabListener { +public class TabbedScanning extends AppCompatActivity implements ActionBar.TabListener { + private static final String TAG = TabbedScanning.class.getSimpleName(); /** * The {@link android.support.v4.view.PagerAdapter} that will provide @@ -30,6 +29,7 @@ public class TabbedScanning extends Activity implements ActionBar.TabListener { */ private SectionsPagerAdapter mSectionsPagerAdapter; + /** * The {@link ViewPager} that will host the section contents. */ @@ -41,21 +41,21 @@ public class TabbedScanning extends Activity implements ActionBar.TabListener { setContentView(R.layout.activity_tabbed_scanning); // Create the adapter that will return a fragment for each of the three // primary sections of the activity. - mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager()); + mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); // Set up the ViewPager with the sections adapter. mViewPager = (ViewPager) findViewById(R.id.container); mViewPager.setAdapter(mSectionsPagerAdapter); - // Set up the action bar. - final ActionBar actionBar = getActionBar(); + final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // When swiping between different sections, select the corresponding // tab. We can also use ActionBar.Tab#select() to do this if we have // a reference to the Tab. - mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { + mViewPager.setOffscreenPageLimit(0); + mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); @@ -76,29 +76,6 @@ public class TabbedScanning extends Activity implements ActionBar.TabListener { } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.menu_tabbed_scanning, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - - //noinspection SimplifiableIfStatement - if (id == R.id.action_settings) { - return true; - } - - return super.onOptionsItemSelected(item); - } - @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { // When the given tab is selected, switch to the corresponding page in @@ -117,70 +94,140 @@ public class TabbedScanning extends Activity implements ActionBar.TabListener { /** * A placeholder fragment containing a simple view. */ - public static class PlaceholderFragment extends Fragment { + public static class ScanFragment extends Fragment { + DecoratedBarcodeView barcodeView; + + public ScanFragment() { + } + /** - * The fragment argument representing the section number for this - * fragment. + * Returns a new instance of this fragment for the given section + * number. */ - private static final String ARG_SECTION_NUMBER = "section_number"; + public static ScanFragment newInstance() { + return new ScanFragment(); + } - public PlaceholderFragment() { + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_tabbed_scanning, container, false); + barcodeView = (DecoratedBarcodeView)rootView.findViewById(R.id.barcode_view); + return rootView; + } + + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + if(barcodeView != null) { + if (isVisibleToUser) { + barcodeView.resume(); + } else { + barcodeView.pauseAndWait(); + } + } + } + + @Override + public void onPause() { + super.onPause(); + barcodeView.pauseAndWait(); + } + + @Override + public void onResume() { + super.onResume(); + barcodeView.resume(); + } + } + + + /** + * A placeholder fragment containing a simple view. + */ + public static class CameraFragment extends Fragment { + + private CameraPreview cameraPreview; + + public CameraFragment() { } /** * Returns a new instance of this fragment for the given section * number. */ - public static PlaceholderFragment newInstance(int sectionNumber) { - PlaceholderFragment fragment = new PlaceholderFragment(); - Bundle args = new Bundle(); - args.putInt(ARG_SECTION_NUMBER, sectionNumber); - fragment.setArguments(args); - return fragment; + public static CameraFragment newInstance() { + return new CameraFragment(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_tabbed_scanning, container, false); - TextView textView = (TextView) rootView.findViewById(R.id.section_label); - textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER))); + View rootView = inflater.inflate(R.layout.fragment_tabbed_camera, container, false); + cameraPreview = (CameraPreview)rootView.findViewById(R.id.camera_preview); return rootView; } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + + if (cameraPreview != null) { + if (isVisibleToUser) { + cameraPreview.resume(); + } else { + cameraPreview.pauseAndWait(); + } + } + } + + @Override + public void onPause() { + super.onPause(); + cameraPreview.pauseAndWait(); + } + + @Override + public void onResume() { + super.onResume(); + } } + + /** * A {@link FragmentPagerAdapter} that returns a fragment corresponding to * one of the sections/tabs/pages. */ - public class SectionsPagerAdapter extends FragmentPagerAdapter { + public class SectionsPagerAdapter extends android.support.v4.app.FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override - public Fragment getItem(int position) { - // getItem is called to instantiate the fragment for the given page. - // Return a PlaceholderFragment (defined as a static inner class below). - return PlaceholderFragment.newInstance(position + 1); + public android.support.v4.app.Fragment getItem(int position) { + if(position == 0) { + return ScanFragment.newInstance(); + } else { + return CameraFragment.newInstance(); + } + } @Override public int getCount() { - // Show 3 total pages. - return 3; + return 2; } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: - return "SECTION 1"; + return "Scan"; case 1: - return "SECTION 2"; - case 2: - return "SECTION 3"; + return "Camera"; } return null; } |
