master
wangbing 6 years ago
parent 04e8bd5924
commit 36f0242404

@ -16,6 +16,10 @@ public class AndroidOptionController {
@FXML
private CheckBox webview;
@FXML
private CheckBox fileselect;
@FXML
private CheckBox qrcode;
@FXML
private Button ok;
@FXML
private Button cancel;
@ -67,4 +71,20 @@ public class AndroidOptionController {
public void setWebview(CheckBox webview) {
this.webview = webview;
}
public CheckBox getFileselect() {
return fileselect;
}
public void setFileselect(CheckBox fileselect) {
this.fileselect = fileselect;
}
public CheckBox getQrcode() {
return qrcode;
}
public void setQrcode(CheckBox qrcode) {
this.qrcode = qrcode;
}
}

@ -90,6 +90,8 @@ public class AndroidCallable implements Callable {
{
HashMap<String, Object> ctx = new HashMap<String, Object>();
ctx.put("package", option.packages);
ctx.put("qrcode", option.qrcode);
ctx.put("fileselect", option.fileselect);
freeMarkerManager.outputTemp(new File(app, "build.gradle"), "Android/app/build.gradles", ctx);
Tool.outputResource("Android/app/proguard-rules.pro", new File(app, "proguard-rules.pro"));
}
@ -98,6 +100,8 @@ public class AndroidCallable implements Callable {
HashMap<String, Object> ctx = new HashMap<String, Object>();
ctx.put("package", option.packages);
ctx.put("domain", option.domain);
ctx.put("qrcode", option.qrcode);
ctx.put("fileselect", option.fileselect);
freeMarkerManager.outputTemp(new File(main, "AndroidManifest.xml"), "Android/app/src/main/AndroidManifest.xml", ctx);
}
@ -112,9 +116,13 @@ public class AndroidCallable implements Callable {
freeMarkerManager.outputTemp(new File(base, "BaseSPATakePhotoFragment.java"), "Android/app/src/main/java/base/BaseSPATakePhotoFragment.java", ctx);
freeMarkerManager.outputTemp(new File(base, "IActivityResult.java"), "Android/app/src/main/java/base/IActivityResult.java", ctx);
if (option.fileselect) {
freeMarkerManager.outputTemp(new File(activity, "FilePickerActivity.java"), "Android/app/src/main/java/base/activity/FilePickerActivity.java", ctx);
}
if (option.qrcode) {
freeMarkerManager.outputTemp(new File(activity, "QRcodeActivity.java"), "Android/app/src/main/java/base/activity/QRcodeActivity.java", ctx);
freeMarkerManager.outputTemp(new File(activity, "QRcodeScanActivity.java"), "Android/app/src/main/java/base/activity/QRcodeScanActivity.java", ctx);
}
freeMarkerManager.outputTemp(new File(service, "RestartService.java"), "Android/app/src/main/java/base/service/RestartService.java", ctx);
@ -146,6 +154,7 @@ public class AndroidCallable implements Callable {
HashMap<String, Object> ctx = new HashMap<String, Object>();
ctx.put("package", option.packages);
ctx.put("domain", option.domain);
ctx.put("webview", option.webview);
freeMarkerManager.outputTemp(new File(domain, "WBUIApplication.java"), "Android/app/src/main/java/WBUIApplication.java", ctx);
freeMarkerManager.outputTemp(new File(domain, "WBUIMainActivity.java"), "Android/app/src/main/java/WBUIMainActivity.java", ctx);
}
@ -164,7 +173,9 @@ public class AndroidCallable implements Callable {
{
Tool.outputResource("Android/app/src/main/res/drawable/background.xml", new File(drawable, "background.xml"));
Tool.outputResource("Android/app/src/main/res/layout/activity_qrcode.xml", new File(layout, "activity_qrcode.xml"));
if (option.qrcode) {
Tool.outputResource("Android/app/src/main/res/layout/activity_qrcode_scan.xml", new File(layout, "activity_qrcode_scan.xml"));
}
if (option.webview) {
Tool.outputResource("Android/app/src/main/res/layout/fragment_webview.xml", new File(layout, "fragment_webview.xml"));
} else {

@ -5,4 +5,6 @@ public class AndroidOption {
public String packages;
public String domain;
public boolean webview;
public boolean fileselect;
public boolean qrcode;
}

@ -580,13 +580,15 @@ public class Dialog {
directoryChooser.setInitialDirectory(new File(dBmanger.getPath()));
Stage stage = new Stage();
File file = directoryChooser.showDialog(stage);
if (file!=null){
System.out.println("生成目录:" + file.getAbsolutePath());
AndroidOption androidOption = new AndroidOption();
androidOption.projectName = controller.getName().getText();
androidOption.packages = controller.getPackages().getText();
androidOption.domain = controller.getDomain().getText();
androidOption.webview = controller.getWebview().isSelected();
androidOption.qrcode = controller.getQrcode().isSelected();
androidOption.fileselect = controller.getFileselect().isSelected();
dBmanger.generateAndroid(file.getAbsolutePath(), androidOption);
Platform.runLater(new Runnable() {
@ -596,6 +598,7 @@ public class Dialog {
}
});
}
}
});
popup = new Stage();

@ -33,7 +33,11 @@
</GridPane>
<HBox prefHeight="40.0" prefWidth="500.0">
<CheckBox mnemonicParsing="false" fx:id="webview" text="WebView" selected="false">
<CheckBox mnemonicParsing="false" fx:id="webview" text="网页开发" selected="false">
</CheckBox>
<CheckBox mnemonicParsing="false" fx:id="fileselect" text="文件选择器" selected="false">
</CheckBox>
<CheckBox mnemonicParsing="false" fx:id="qrcode" text="二维码" selected="false">
</CheckBox>
<padding>
<Insets bottom="3.0" left="30.0" right="10.0" top="10.0"/>

@ -15,14 +15,15 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = rootProject.getName() + "-v" + defaultConfig.versionName + ".apk"
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
//QMUI
implementation 'com.qmuiteam:qmui:1.1.3'
@ -36,11 +37,15 @@ dependencies {
implementation 'com.github.chrisbanes:PhotoView:1.2.6'
//权限申请框架
implementation 'com.yanzhenjie:permission:2.0.0-rc12'
<#if qrcode>
//二维码
implementation 'com.google.zxing:core:3.3.2'
implementation'com.journeyapps:zxing-android-embedded:3.6.0'
</#if>
<#if fileselect>
//文件选择
implementation 'com.leon:lfilepickerlibrary:1.7.0'
</#if>
//Picker
implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:1.5.6'
}

@ -3,6 +3,7 @@
package="${package}">
<application
android:name="${domain}.WBUIApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name_cn"
@ -20,13 +21,16 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<#if fileselect>
<!--文件选择器-->
<activity android:name="${domain}.base.activity.FilePickerActivity" />
</#if>
<#if qrcode>
<!--二维码Activity-->
<activity android:name="${domain}.base.activity.QRcodeActivity" />
</#if>
<!--重启服务-->
<service android:name="${domain}.base.services.RestartService" />
<service android:name="${domain}.base.service.RestartService" />
</application>

@ -1,21 +1,14 @@
package ${domain};
import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.widget.Toast;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import com.yanzhenjie.permission.Action;
import com.yanzhenjie.permission.AndPermission;
import java.util.List;
import ${package}.R;
import ${domain}.base.BaseSPAActivity;
import ${domain}.base.Consant;
<#if webview>
import ${domain}.fragment.WebViewFragment;
</#if>
<#if !webview>
import ${domain}.fragment.MainFragment;
</#if>
public class WBUIMainActivity extends BaseSPAActivity {
@ -31,41 +24,17 @@ public class WBUIMainActivity extends BaseSPAActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndPermission.with(this).runtime().permission(Manifest.permission.READ_EXTERNAL_STORAGE).onGranted(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
startFirstFragment(new MainFragment());
}
}).onDenied(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
<#if webview>
startFirstFragment(new WebViewFragment());
</#if>
<#if !webview>
startFirstFragment(new MainFragment());
}
}).start();
</#if>
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Consant.REQUESTCODE_FROM_FRAGMENT) {
Toast.makeText(getApplicationContext(), "选中了个文件", Toast.LENGTH_SHORT).show();
}else {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
if (result.getContents() == null) {
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}
}

@ -1,68 +1,46 @@
package ${domain}.base.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.KeyEvent;
import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
import ${package}.R;
public class QRcodeActivity extends Activity implements DecoratedBarcodeView.TorchListener {
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
private CaptureManager captureManager;
private DecoratedBarcodeView mDBV;
public class QRcodeActivity extends Activity {
public static String QRCODE_RESULT = "qrcode_result";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qrcode);
mDBV = (DecoratedBarcodeView) findViewById(R.id.dbv_custom);
mDBV.setTorchListener(this);
//重要代码,初始化捕获
captureManager = new CaptureManager(this, mDBV);
captureManager.initializeFromIntent(getIntent(), savedInstanceState);
captureManager.decode();
}
@Override
protected void onPause() {
super.onPause();
captureManager.onPause();
new IntentIntegrator(this)
// 自定义Activity重点是这行----------------------------
.setCaptureActivity(QRcodeScanActivity.class)
.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE)// 扫码的类型,可选:一维码,二维码,一/二维码
.setPrompt("请对准二维码")// 设置提示语
.setCameraId(0)// 选择摄像头,可使用前置或者后置
.setBeepEnabled(true)// 是否开启声音,扫完码之后会"哔"的一声
.setBarcodeImageEnabled(true)// 扫完码之后生成二维码的图片
.initiateScan();// 初始化扫码
}
@Override
protected void onResume() {
super.onResume();
captureManager.onResume();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
if (result.getContents() == null) {
@Override
protected void onDestroy() {
super.onDestroy();
captureManager.onDestroy();
} else {
Intent intent = new Intent();
intent.putExtra(QRCODE_RESULT, result.getContents());
setResult(RESULT_OK, intent);
finish();
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
captureManager.onSaveInstanceState(outState);
} else {
setResult(RESULT_CANCELED);
finish();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return mDBV.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
}
@Override
public void onTorchOn() {
}
@Override
public void onTorchOff() {
}
}

@ -0,0 +1,69 @@
package ${domain}.base.activity;
import android.app.Activity;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.KeyEvent;
import ${domain}.android.R;
import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
public class QRcodeScanActivity extends Activity implements DecoratedBarcodeView.TorchListener {
private CaptureManager captureManager;
private DecoratedBarcodeView mDBV;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qrcode_scan);
mDBV = (DecoratedBarcodeView) findViewById(R.id.dbv_custom);
mDBV.setTorchListener(this);
//重要代码,初始化捕获
captureManager = new CaptureManager(this, mDBV);
captureManager.initializeFromIntent(getIntent(), savedInstanceState);
captureManager.decode();
}
@Override
protected void onPause() {
super.onPause();
captureManager.onPause();
}
@Override
protected void onResume() {
super.onResume();
captureManager.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
captureManager.onDestroy();
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
captureManager.onSaveInstanceState(outState);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return mDBV.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
}
@Override
public void onTorchOn() {
}
@Override
public void onTorchOff() {
}
}

@ -33,7 +33,7 @@ public class WebViewFragment extends BaseSPAFragment {
@Override
protected void onViewInit() {
initWebView("http://192.168.1.103:8080/wap/index#/");
initWebView("http://127.0.0.1:8080/");
}
private void initWebView(final String url) {

Loading…
Cancel
Save

Powered by TurnKey Linux.