Skip to content

Commit

Permalink
第一个版本,完成用户模块,二维码扫描,聊天等
Browse files Browse the repository at this point in the history
  • Loading branch information
motianhuo committed Jun 9, 2015
1 parent c3324da commit ec789c7
Show file tree
Hide file tree
Showing 1,884 changed files with 101,170 additions and 0 deletions.
9 changes: 9 additions & 0 deletions WeChat/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
33 changes: 33 additions & 0 deletions WeChat/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>WeChat</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
2 changes: 2 additions & 0 deletions WeChat/.settings/org.eclipse.core.resources.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
4 changes: 4 additions & 0 deletions WeChat/.settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.source=1.6
1 change: 1 addition & 0 deletions WeChat/.svn/entries
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
12
1 change: 1 addition & 0 deletions WeChat/.svn/format
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
12
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,267 @@
package com.juns.wechat.zxing;

import java.io.IOException;
import java.util.Vector;

import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.graphics.Bitmap;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Vibrator;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.zxing.BarcodeFormat;
import com.juns.wechat.R;
import com.juns.wechat.SplashActivity;
import com.juns.wechat.common.Utils;
import com.juns.wechat.zxing.camera.CameraManager;
import com.juns.wechat.zxing.decoding.CaptureActivityHandler;
import com.juns.wechat.zxing.decoding.InactivityTimer;
import com.juns.wechat.zxing.view.ViewfinderView;

/**
* @ClassName: CaptureActivity
* @Description: 二维码扫描
* @author juns
* @date 2013-8-14
*/
public class CaptureActivity extends Activity implements Callback {

private CaptureActivityHandler handler;
private ViewfinderView viewfinderView;
private boolean hasSurface;
private Vector<BarcodeFormat> decodeFormats;
private String characterSet;
private InactivityTimer inactivityTimer;
private MediaPlayer mediaPlayer;
private boolean playBeep;
private static final float BEEP_VOLUME = 0.10f;
private boolean vibrate;

private TextView mTitle;
private ImageView mGoHome;
private boolean isNoCute = true;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_code_scan);
CameraManager.init(getApplication());
initControl();
hasSurface = false;
inactivityTimer = new InactivityTimer(this);
Bundle bundle = getIntent().getExtras();
if (bundle != null && bundle.getBoolean("isNoCute")) {
isNoCute = true;
} else {
isNoCute = false;
}
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (isNoCute) {
Utils.finish(CaptureActivity.this);
} else {
Utils.start_Activity(CaptureActivity.this, SplashActivity.class);
Utils.finish(CaptureActivity.this);
}
}
return super.onKeyDown(keyCode, event);
}

private void initControl() {
viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view);
mTitle = (TextView) findViewById(R.id.common_title_msg);
mTitle.setText("扫一扫");
mGoHome = (ImageView) findViewById(R.id.img_back);
mGoHome.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Utils.finish(CaptureActivity.this);
}
});
}

@Override
protected void onResume() {
super.onResume();
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
if (hasSurface) {
initCamera(surfaceHolder);
} else {
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
decodeFormats = null;
characterSet = null;

playBeep = true;
AudioManager audioService = (AudioManager) getSystemService(AUDIO_SERVICE);
if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) {
playBeep = false;
}
initBeepSound();
vibrate = true;
}

@Override
protected void onPause() {
super.onPause();
if (handler != null) {
handler.quitSynchronously();
handler = null;
}
CameraManager.get().closeDriver();
}

@Override
public void onDestroy() {
if (inactivityTimer != null)
inactivityTimer.shutdown();
super.onDestroy();
}

private void initCamera(SurfaceHolder surfaceHolder) {
try {
CameraManager.get().openDriver(surfaceHolder);
} catch (IOException ioe) {
return;
} catch (RuntimeException e) {
return;
}
if (handler == null) {
handler = new CaptureActivityHandler(this, decodeFormats,
characterSet);
}
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {

}

@Override
public void surfaceCreated(SurfaceHolder holder) {
if (!hasSurface) {
hasSurface = true;
initCamera(holder);
}

}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
hasSurface = false;
}

public ViewfinderView getViewfinderView() {
return viewfinderView;
}

public Handler getHandler() {
return handler;
}

public void drawViewfinder() {
viewfinderView.drawViewfinder();

}

/**
* 扫描正确后的震动声音,如果感觉apk大了,可以删除
*/
private void initBeepSound() {
if (playBeep && mediaPlayer == null) {
// The volume on STREAM_SYSTEM is not adjustable, and users found it
// too loud,
// so we now play on the music stream.
setVolumeControlStream(AudioManager.STREAM_MUSIC);
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnCompletionListener(beepListener);

AssetFileDescriptor file = getResources().openRawResourceFd(
R.raw.beep);
try {
mediaPlayer.setDataSource(file.getFileDescriptor(),
file.getStartOffset(), file.getLength());
file.close();
mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME);
mediaPlayer.prepare();
} catch (IOException e) {
mediaPlayer = null;
}
}
}

private static final long VIBRATE_DURATION = 200L;

private void playBeepSoundAndVibrate() {
if (playBeep && mediaPlayer != null) {
mediaPlayer.start();
}
if (vibrate) {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(VIBRATE_DURATION);
}
}

/**
* When the beep has finished playing, rewind to queue up another one.
*/
private final OnCompletionListener beepListener = new OnCompletionListener() {
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.seekTo(0);
}
};

public void handleDecode(com.google.zxing.Result result, Bitmap barcode) {
inactivityTimer.onActivity();
playBeepSoundAndVibrate();

final String resultString = result.getText();
Intent resultIntent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("result", resultString);
resultIntent.putExtras(bundle);
this.setResult(RESULT_OK, resultIntent);

if (!isNoCute) {
if (TextUtils.isEmpty(resultString)) {
Utils.showLongToast(CaptureActivity.this, "二维码信息错误!");
return;
} else {
if (resultString.startsWith("http://")) {
Uri uri = Uri.parse(resultString);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} else {
Utils.showLongToast(this, "扫描结果为:" + result);
}
}
}
finish();
}

}
Loading

0 comments on commit ec789c7

Please sign in to comment.