Android Open Source - AndroidWifiServer Q R Reader Activity






From Project

Back to project page AndroidWifiServer.

License

The source code is released under:

Apache License

If you think the Android project AndroidWifiServer listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package jp.maju.wifiserver.camera;
//  w ww .j a v a2  s . co  m
import jp.maju.wifidetecter.utils.Logger;
import jp.maju.wifiserver.GateActivity;
import jp.maju.wifiserver.R;
import jp.maju.wifiserver.SocketInfo;
import jp.maju.wifiserver.R.id;
import jp.maju.wifiserver.R.layout;
import jp.maju.wifiserver.R.style;
import jp.maju.wifiserver.client.ClientActivity;
import jp.maju.wifiserver.util.CommonUtil;
import jp.maju.wifiserver.util.PreferenceUtil;
import android.content.Intent;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.os.Bundle;
import android.support.v4.view.WindowCompat;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.SeekBar;
import android.widget.Toast;

import com.google.zxing.BinaryBitmap;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.PlanarYUVLuminanceSource;
import com.google.zxing.Result;
import com.google.zxing.common.HybridBinarizer;

/*
 * Copyright {2014} {Matsuda Jumpei}
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
public class QRReaderActivity extends ActionBarActivity implements
        OnClickListener {
    private static final String TAG = QRReaderActivity.class.getSimpleName();

    private CameraSurfaceView mCameraSurfaceView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTheme(R.style.Theme_AppCompat);

        requestWindowFeature(WindowCompat.FEATURE_ACTION_BAR_OVERLAY);

        setContentView(R.layout.activity_qr_reader);
        
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            startActivity(new Intent(this, GateActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
            finish();
            return true;
        }
        
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);

        mCameraSurfaceView = ((CameraSurfaceView) findViewById(R.id.surface_camera))
                .initialize(((SeekBar) findViewById(R.id.seek_zoom)));

        mCameraSurfaceView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.surface_camera:
                mCameraSurfaceView.oneShot(new PreviewCallback() {

                    @Override
                    public void onPreviewFrame(byte[] data, Camera camera) {
                        int previewWidth = camera.getParameters()
                                .getPreviewSize().width;
                        int previewHeight = camera.getParameters()
                                .getPreviewSize().height;

                        PlanarYUVLuminanceSource source = new PlanarYUVLuminanceSource(
                                data, previewWidth, previewHeight, 0, 0,
                                previewWidth, previewHeight, false);
                        BinaryBitmap biBitmap = new BinaryBitmap(
                                new HybridBinarizer(source));

                        Result result = null;
                        try {
                            result = new MultiFormatReader().decode(biBitmap);
                            String text = result.getText();
                            String[] params = text.split(":");

                            if (CommonUtil.getCurrentSSID(getApplication())
                                    .equals(params[0])) {
                                SocketInfo si = new SocketInfo(params[0]);
                                si.setHost(params[1]);
                                si.setPort(Integer.parseInt(params[2]));
                                si.setKind(params[3]);
                                
                                Intent intent = new Intent(
                                        QRReaderActivity.this,
                                        ClientActivity.class).putExtra(
                                        ClientActivity.KEY_SOCKET_INFO, si);
                                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

                                PreferenceUtil.save(getApplication(), si);
                                PreferenceUtil.setDefaultSide(getApplication(), 2);
                                startActivity(intent);

                                finish();
                            }
                            Logger.d(TAG, "Result decoded:" + text);
                        } catch (Exception e) {
                            Logger.e(TAG, e);

                            Toast.makeText(getApplicationContext(),
                                    "Failed to read", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    }
                }, 3);
                break;
        }
    }

}




Java Source Code List

jp.maju.wifiserver.AsyncExecutionTask.java
jp.maju.wifiserver.CustomWebView.java
jp.maju.wifiserver.DBAdapter.java
jp.maju.wifiserver.GateActivity.java
jp.maju.wifiserver.HTMLBuilder.java
jp.maju.wifiserver.SocketInfo.java
jp.maju.wifiserver.camera.CameraSurfaceView.java
jp.maju.wifiserver.camera.QRReaderActivity.java
jp.maju.wifiserver.client.ClientActivity.java
jp.maju.wifiserver.client.ClientService.java
jp.maju.wifiserver.server.InitServerActivity.java
jp.maju.wifiserver.server.ServerActivity.java
jp.maju.wifiserver.server.ServerService.java
jp.maju.wifiserver.twitter.ProxyDialogFragment.java
jp.maju.wifiserver.twitter.ProxyWrapper.java
jp.maju.wifiserver.twitter.TweetTask.java
jp.maju.wifiserver.twitter.TwitterOAuthActivity.java
jp.maju.wifiserver.twitter.TwitterUtils.java
jp.maju.wifiserver.util.CommonUtil.java
jp.maju.wifiserver.util.Logger.java
jp.maju.wifiserver.util.PreferenceUtil.java