Compare commits
33 Commits
Author | SHA1 | Date |
---|---|---|
|
fd61bd2c02 | 3 years ago |
|
1be0dac4a5 | 3 years ago |
|
bfdeb39c3e | 3 years ago |
|
0027d599c8 | 3 years ago |
|
305a31ac1b | 3 years ago |
|
18314c351a | 3 years ago |
|
02e565e4e6 | 3 years ago |
|
850390ffd5 | 3 years ago |
|
4e8ae2b953 | 3 years ago |
|
bded93627e | 3 years ago |
|
6b19475bd4 | 3 years ago |
|
fdb44404a2 | 3 years ago |
|
dd40173695 | 3 years ago |
|
536c13630b | 3 years ago |
|
fbe60f219d | 3 years ago |
|
a59980f8c4 | 3 years ago |
|
7709836c8f | 3 years ago |
|
8a8941bf76 | 3 years ago |
|
b2324b17a8 | 3 years ago |
|
858e6ee843 | 3 years ago |
|
dc6c5d2ffa | 3 years ago |
|
77e47bdbdf | 3 years ago |
|
b959add47a | 3 years ago |
|
0dab53f55b | 3 years ago |
|
b536be4092 | 3 years ago |
|
5a9d4e959b | 3 years ago |
|
d4ae6d1c66 | 3 years ago |
|
8242cce9a2 | 3 years ago |
|
0b4b10ddf6 | 3 years ago |
|
ff40b156dc | 3 years ago |
|
b856ddad75 | 3 years ago |
|
6e3fd3caa8 | 3 years ago |
|
95dc226e7e | 3 years ago |
@ -1,2 +1,3 @@
|
|||||||
# gitproject
|
# gitproject
|
||||||
|
# 该系统为老人生活小助手系统,主要由一键通,天气预测,找寻,语音识别四个模块构成,有效迅速的解决了老人日常生活中遇到的许多麻烦,帮助老人在日常生活中生活的更加方便。同时填补了目前市场上的空白。
|
||||||
|
# 此软件构建在andorid 7.0及以上的系统中
|
||||||
|
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 186 KiB |
After Width: | Height: | Size: 252 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 284 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 284 KiB |
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 7.7 KiB |
@ -0,0 +1,117 @@
|
|||||||
|
package com.example.myapplication;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
import org.json.JSONTokener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Json结果解析类
|
||||||
|
*/
|
||||||
|
public class JsonParser {
|
||||||
|
|
||||||
|
public static String parseIatResult(String json) {
|
||||||
|
StringBuffer ret = new StringBuffer();
|
||||||
|
try {
|
||||||
|
JSONTokener tokener = new JSONTokener(json);
|
||||||
|
JSONObject joResult = new JSONObject(tokener);
|
||||||
|
|
||||||
|
JSONArray words = joResult.getJSONArray("ws");
|
||||||
|
for (int i = 0; i < words.length(); i++) {
|
||||||
|
// 转写结果词,默认使用第一个结果
|
||||||
|
JSONArray items = words.getJSONObject(i).getJSONArray("cw");
|
||||||
|
JSONObject obj = items.getJSONObject(0);
|
||||||
|
ret.append(obj.getString("w"));
|
||||||
|
// 如果需要多候选结果,解析数组其他字段
|
||||||
|
// for(int j = 0; j < items.length(); j++)
|
||||||
|
// {
|
||||||
|
// JSONObject obj = items.getJSONObject(j);
|
||||||
|
// ret.append(obj.getString("w"));
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return ret.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String parseGrammarResult(String json) {
|
||||||
|
StringBuffer ret = new StringBuffer();
|
||||||
|
try {
|
||||||
|
JSONTokener tokener = new JSONTokener(json);
|
||||||
|
JSONObject joResult = new JSONObject(tokener);
|
||||||
|
|
||||||
|
JSONArray words = joResult.getJSONArray("ws");
|
||||||
|
for (int i = 0; i < words.length(); i++) {
|
||||||
|
JSONArray items = words.getJSONObject(i).getJSONArray("cw");
|
||||||
|
for(int j = 0; j < items.length(); j++)
|
||||||
|
{
|
||||||
|
JSONObject obj = items.getJSONObject(j);
|
||||||
|
if(obj.getString("w").contains("nomatch"))
|
||||||
|
{
|
||||||
|
ret.append("没有匹配结果.");
|
||||||
|
return ret.toString();
|
||||||
|
}
|
||||||
|
ret.append("【结果】" + obj.getString("w"));
|
||||||
|
ret.append("【置信度】" + obj.getInt("sc"));
|
||||||
|
ret.append("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
ret.append("没有匹配结果.");
|
||||||
|
}
|
||||||
|
return ret.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String parseLocalGrammarResult(String json) {
|
||||||
|
StringBuffer ret = new StringBuffer();
|
||||||
|
try {
|
||||||
|
JSONTokener tokener = new JSONTokener(json);
|
||||||
|
JSONObject joResult = new JSONObject(tokener);
|
||||||
|
|
||||||
|
JSONArray words = joResult.getJSONArray("ws");
|
||||||
|
for (int i = 0; i < words.length(); i++) {
|
||||||
|
JSONArray items = words.getJSONObject(i).getJSONArray("cw");
|
||||||
|
for(int j = 0; j < items.length(); j++)
|
||||||
|
{
|
||||||
|
JSONObject obj = items.getJSONObject(j);
|
||||||
|
if(obj.getString("w").contains("nomatch"))
|
||||||
|
{
|
||||||
|
ret.append("没有匹配结果.");
|
||||||
|
return ret.toString();
|
||||||
|
}
|
||||||
|
ret.append("【结果】" + obj.getString("w"));
|
||||||
|
ret.append("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ret.append("【置信度】" + joResult.optInt("sc"));
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
ret.append("没有匹配结果.");
|
||||||
|
}
|
||||||
|
return ret.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String parseTransResult(String json,String key) {
|
||||||
|
StringBuffer ret = new StringBuffer();
|
||||||
|
try {
|
||||||
|
JSONTokener tokener = new JSONTokener(json);
|
||||||
|
JSONObject joResult = new JSONObject(tokener);
|
||||||
|
String errorCode = joResult.optString("ret");
|
||||||
|
if(!errorCode.equals("0")) {
|
||||||
|
return joResult.optString("errmsg");
|
||||||
|
}
|
||||||
|
JSONObject transResult = joResult.optJSONObject("trans_result");
|
||||||
|
ret.append(transResult.optString(key));
|
||||||
|
/*JSONArray words = joResult.getJSONArray("results");
|
||||||
|
for (int i = 0; i < words.length(); i++) {
|
||||||
|
JSONObject obj = words.getJSONObject(i);
|
||||||
|
ret.append(obj.getString(key));
|
||||||
|
}*/
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return ret.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package com.example.myapplication;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.example.myapplication.weather.MainActivity1;
|
||||||
|
import com.example.myapplication.weather.SettingActivity;
|
||||||
|
import com.example.myapplication.weather.WeatherItem;
|
||||||
|
|
||||||
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_main);
|
||||||
|
Button button_main_1=findViewById(R.id.button_main_1);
|
||||||
|
//点击
|
||||||
|
button_main_1.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Intent intent1=new Intent(MainActivity.this,yijiantong.class);
|
||||||
|
startActivity(intent1);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//点击
|
||||||
|
Button button_main_2=findViewById(R.id.button_main_2);
|
||||||
|
button_main_2.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Intent intent2=new Intent(MainActivity.this, MainActivity1.class);
|
||||||
|
startActivity(intent2);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button button_main_3=findViewById(R.id.button_main_3);
|
||||||
|
//点击
|
||||||
|
button_main_3.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Object packageContext;
|
||||||
|
Intent intent3=new Intent(MainActivity.this,zhaoxun.class);
|
||||||
|
startActivity(intent3);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button button_main_4=findViewById(R.id.button_main_4);
|
||||||
|
//点击
|
||||||
|
button_main_4.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Object packageContext;
|
||||||
|
Intent intent1=new Intent(MainActivity.this,yuyin.class);
|
||||||
|
startActivity(intent1);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.myapplication;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
|
|
||||||
|
import com.iflytek.cloud.SpeechUtility;
|
||||||
|
|
||||||
|
public class SpeechApplication extends Application {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate() {
|
||||||
|
|
||||||
|
// 5ef048e1 为在开放平台注册的APPID 注意没有空格,直接替换即可
|
||||||
|
SpeechUtility.createUtility(SpeechApplication.this, "appid=6d0c39e4");
|
||||||
|
|
||||||
|
super.onCreate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,224 @@
|
|||||||
|
package com.example.myapplication;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
|
||||||
|
import com.baidu.mapapi.bikenavi.BikeNavigateHelper;
|
||||||
|
import com.baidu.mapapi.walknavi.adapter.IWRoutePlanListener;
|
||||||
|
import com.baidu.mapapi.walknavi.model.WalkRoutePlanError;
|
||||||
|
import com.baidu.mapapi.walknavi.params.*;
|
||||||
|
import com.baidu.mapapi.CoordType;
|
||||||
|
import com.baidu.mapapi.SDKInitializer;
|
||||||
|
import com.baidu.mapapi.model.LatLng;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import com.baidu.baidunavis.BaiduNaviParams;
|
||||||
|
import com.baidu.mapapi.SDKInitializer;
|
||||||
|
import com.baidu.mapapi.map.MapView;
|
||||||
|
import com.baidu.mapapi.model.LatLng;
|
||||||
|
import com.baidu.mapapi.walknavi.WalkNavigateHelper;
|
||||||
|
import com.baidu.mapapi.walknavi.adapter.IWEngineInitListener;
|
||||||
|
import com.baidu.mapapi.walknavi.params.WalkNaviLaunchParam;
|
||||||
|
|
||||||
|
public class itemfound extends AppCompatActivity {
|
||||||
|
private WalkNavigateHelper helper = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
//initPermissions(); // 初始化权限
|
||||||
|
setContentView(R.layout.activity_itemfound); // 填充视图
|
||||||
|
|
||||||
|
// 点击按钮开始导航
|
||||||
|
Button imageButton = findViewById(R.id.button_item_keys);
|
||||||
|
imageButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
// 初始化步行导航
|
||||||
|
startBikeNavi();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button imageButtonwallet = findViewById(R.id.button_item_wallet);
|
||||||
|
imageButtonwallet.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
// 初始化步行导航
|
||||||
|
startBikeNavi();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 初始化权限
|
||||||
|
/*
|
||||||
|
private void initPermissions() {
|
||||||
|
if (Build.VERSION.SDK_INT >= 23) {
|
||||||
|
ArrayList<String> permissionsList = new ArrayList<>();
|
||||||
|
String[] permissions = {
|
||||||
|
Manifest.permission.ACCESS_NETWORK_STATE,
|
||||||
|
Manifest.permission.INTERNET,
|
||||||
|
Manifest.permission.ACCESS_COARSE_LOCATION,
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION,
|
||||||
|
Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||||
|
};
|
||||||
|
|
||||||
|
for (String perm : permissions) {
|
||||||
|
if (PackageManager.PERMISSION_GRANTED != checkSelfPermission(perm)) {
|
||||||
|
permissionsList.add(perm);
|
||||||
|
// 进入到这里代表没有权限.
|
||||||
|
}
|
||||||
|
if (!permissionsList.isEmpty()) {
|
||||||
|
String[] strings = new String[permissionsList.size()];
|
||||||
|
requestPermissions(permissionsList.toArray(strings), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
private void startBikeNavi() {
|
||||||
|
//Log.d("=========", "startBikeNavi");
|
||||||
|
try {
|
||||||
|
helper = WalkNavigateHelper.getInstance();
|
||||||
|
helper.initNaviEngine(this, new IWEngineInitListener() {
|
||||||
|
@Override
|
||||||
|
public void engineInitSuccess() {
|
||||||
|
// Log.d("=========", "BikeNavi engineInitSuccess引擎初始化成功");
|
||||||
|
startWebNavi();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void engineInitFail() {
|
||||||
|
// Log.d("=========", "BikeNavi engineInitFail");
|
||||||
|
BikeNavigateHelper.getInstance().unInitNaviEngine();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Log.d("=========", "startBikeNavi Exception");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void startWebNavi() {
|
||||||
|
//起终点位置
|
||||||
|
LatLng walkStartNode = new LatLng(39.110132, 117.358512);
|
||||||
|
LatLng walkEndNode = new LatLng(39.111348, 117.358940);
|
||||||
|
|
||||||
|
WalkRouteNodeInfo startNode = new WalkRouteNodeInfo();
|
||||||
|
startNode.setLocation(walkStartNode);
|
||||||
|
WalkRouteNodeInfo endNode = new WalkRouteNodeInfo();
|
||||||
|
endNode.setLocation(walkEndNode);
|
||||||
|
// 官网
|
||||||
|
//构造WalkNaviLaunchParam
|
||||||
|
WalkNaviLaunchParam walkParam = new WalkNaviLaunchParam().startNodeInfo(startNode).endNodeInfo(endNode);
|
||||||
|
//获取WalkNavigateHelper实例 //发起算路
|
||||||
|
helper.routePlanWithRouteNode(walkParam, new IWRoutePlanListener() {
|
||||||
|
@Override
|
||||||
|
public void onRoutePlanStart() {
|
||||||
|
// Log.d("=======", "WalkNavi onRoutePlanStart开始步行导航");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRoutePlanSuccess() {
|
||||||
|
// Log.d("========", "onRoutePlanSuccess算路成功");
|
||||||
|
Intent intent = new Intent(itemfound.this,WNaviGuideActivity.class);
|
||||||
|
// intent.setClass(getContext(), WNaviGuideActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRoutePlanFail(WalkRoutePlanError error) {
|
||||||
|
// Log.d("Walk", "WalkNavi onRoutePlanFail");
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_itemfound);
|
||||||
|
Button find_wallet=findViewById(R.id.button_item_wallet);
|
||||||
|
Button find_keys=findViewById(R.id.button_item_keys);
|
||||||
|
find_wallet.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {//Intent
|
||||||
|
double locationX;
|
||||||
|
double locationy;
|
||||||
|
//BaiduMapNavigation
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
find_keys.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {//Intent
|
||||||
|
//NaviParaOption para=new Navi();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}*/ private void startBikeNavi1() {
|
||||||
|
//Log.d("=========", "startBikeNavi");
|
||||||
|
try {
|
||||||
|
helper = WalkNavigateHelper.getInstance();
|
||||||
|
helper.initNaviEngine(this, new IWEngineInitListener() {
|
||||||
|
@Override
|
||||||
|
public void engineInitSuccess() {
|
||||||
|
// Log.d("=========", "BikeNavi engineInitSuccess引擎初始化成功");
|
||||||
|
startWebNavi1();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void engineInitFail() {
|
||||||
|
// Log.d("=========", "BikeNavi engineInitFail");
|
||||||
|
BikeNavigateHelper.getInstance().unInitNaviEngine();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Log.d("=========", "startBikeNavi Exception");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void startWebNavi1() {
|
||||||
|
//起终点位置
|
||||||
|
LatLng walkStartNode = new LatLng(39.110132, 117.358512);
|
||||||
|
LatLng walkEndNode = new LatLng(39.112286, 117.359619);
|
||||||
|
|
||||||
|
WalkRouteNodeInfo startNode = new WalkRouteNodeInfo();
|
||||||
|
startNode.setLocation(walkStartNode);
|
||||||
|
WalkRouteNodeInfo endNode = new WalkRouteNodeInfo();
|
||||||
|
endNode.setLocation(walkEndNode);
|
||||||
|
// 官网
|
||||||
|
//构造WalkNaviLaunchParam
|
||||||
|
WalkNaviLaunchParam walkParam = new WalkNaviLaunchParam().startNodeInfo(startNode).endNodeInfo(endNode);
|
||||||
|
//获取WalkNavigateHelper实例 //发起算路
|
||||||
|
helper.routePlanWithRouteNode(walkParam, new IWRoutePlanListener() {
|
||||||
|
@Override
|
||||||
|
public void onRoutePlanStart() {
|
||||||
|
// Log.d("=======", "WalkNavi onRoutePlanStart开始步行导航");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRoutePlanSuccess() {
|
||||||
|
// Log.d("========", "onRoutePlanSuccess算路成功");
|
||||||
|
Intent intent = new Intent(itemfound.this,WNaviGuideActivity.class);
|
||||||
|
// intent.setClass(getContext(), WNaviGuideActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRoutePlanFail(WalkRoutePlanError error) {
|
||||||
|
// Log.d("Walk", "WalkNavi onRoutePlanFail");
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.example.myapplication;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
public class jiankang extends AppCompatActivity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_jiankang);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.example.myapplication.weather;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
import android.database.sqlite.SQLiteOpenHelper;
|
||||||
|
|
||||||
|
public class DatabaseHelper extends SQLiteOpenHelper {
|
||||||
|
private static final int VERSION = 1;
|
||||||
|
private static final String NAME = "weather";
|
||||||
|
|
||||||
|
public DatabaseHelper(Context context){
|
||||||
|
super(context,NAME,null,VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(SQLiteDatabase db) {
|
||||||
|
db.execSQL("create table weather (_id INTEGER PRIMARY KEY AUTOINCREMENT,date text,max_temp text,min_temp text,text text,humidity text,pressure text,wind text,icon text)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.example.myapplication.weather;
|
||||||
|
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
import com.example.myapplication.R;
|
||||||
|
import com.example.myapplication.weather.SingleFragmentActivity;
|
||||||
|
import com.example.myapplication.weather.WeatherFragment;
|
||||||
|
|
||||||
|
public class MainActivity1 extends SingleFragmentActivity implements WeatherFragment.Callbacks{
|
||||||
|
@Override
|
||||||
|
protected Fragment createFragment() {
|
||||||
|
return WeatherFragment.newInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLayoutId() {
|
||||||
|
return R.layout.activity_masterdetail;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getFragmentId() {
|
||||||
|
return R.id.fragment_container;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onWeatherSelected(WeatherItem weatherItem){ //平板中选中天气
|
||||||
|
if(findViewById(R.id.detail_container)==null){
|
||||||
|
Intent intent = WeatherDetailActivity.newIntent(this,weatherItem);
|
||||||
|
startActivity(intent);
|
||||||
|
}else{
|
||||||
|
Fragment newDetail = WeatherDetailFragment.newInstance(weatherItem);
|
||||||
|
getSupportFragmentManager().beginTransaction()
|
||||||
|
.replace(R.id.detail_container,newDetail)
|
||||||
|
.commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
package com.example.myapplication.weather;
|
||||||
|
|
||||||
|
import android.app.AlarmManager;
|
||||||
|
import android.app.IntentService;
|
||||||
|
import android.app.Notification;
|
||||||
|
import android.app.NotificationChannel;
|
||||||
|
import android.app.NotificationManager;
|
||||||
|
import android.app.PendingIntent;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.SystemClock;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.core.app.NotificationCompat;
|
||||||
|
|
||||||
|
import com.example.myapplication.R;
|
||||||
|
import com.example.myapplication.weather.WeatherFragment;
|
||||||
|
|
||||||
|
public class NotificationService extends IntentService {
|
||||||
|
private static final String TAG = "NotificationService";
|
||||||
|
|
||||||
|
private static final int NOTIFICATION_INTERVAL = 1000*60;
|
||||||
|
|
||||||
|
public static Intent newIntent(Context context){
|
||||||
|
return new Intent(context,NotificationService.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public NotificationService(){
|
||||||
|
super(TAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onHandleIntent(@Nullable Intent intent) {
|
||||||
|
Log.i(TAG,"Intent there");
|
||||||
|
|
||||||
|
Intent i = WeatherFragment.newIntent(this);
|
||||||
|
PendingIntent pi = PendingIntent.getService(this,0,i,0);
|
||||||
|
|
||||||
|
Notification notification = null;
|
||||||
|
SharedPreferences pref = this.getSharedPreferences("setting",Context.MODE_PRIVATE);
|
||||||
|
String unit = pref.getString("unit","摄氏度");
|
||||||
|
String unit_text = "°";
|
||||||
|
if (unit == "华氏度"){
|
||||||
|
unit_text = "℉";
|
||||||
|
}
|
||||||
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
|
||||||
|
.setTicker("ticker")
|
||||||
|
.setSmallIcon(R.drawable.a100)
|
||||||
|
.setContentTitle("今日天气")
|
||||||
|
.setContentText(pref.getString("city","北京")+
|
||||||
|
" 天气:"+pref.getString("text","")+
|
||||||
|
", 最高温度:"+pref.getString("max_temp","")+unit_text+
|
||||||
|
", 最低温度:"+pref.getString("min_temp","")+unit_text)
|
||||||
|
.setContentIntent(pi)
|
||||||
|
.setAutoCancel(true);
|
||||||
|
|
||||||
|
NotificationManager notificationManager =(NotificationManager)
|
||||||
|
getSystemService(NOTIFICATION_SERVICE);
|
||||||
|
|
||||||
|
//一定要设置channel
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
NotificationChannel channel = new NotificationChannel("to-do"
|
||||||
|
, "待办消息",
|
||||||
|
NotificationManager.IMPORTANCE_HIGH);
|
||||||
|
channel.enableVibration(true);
|
||||||
|
channel.setVibrationPattern(new long[]{500});
|
||||||
|
notificationManager.createNotificationChannel(channel);
|
||||||
|
builder.setChannelId("to-do");
|
||||||
|
notification = builder.build();
|
||||||
|
} else {
|
||||||
|
notification = builder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
notificationManager.notify(0,notification);
|
||||||
|
System.out.println(notification);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setServiceAlarm(Context context,boolean isOn){
|
||||||
|
Intent i = NotificationService.newIntent(context);
|
||||||
|
PendingIntent pi = PendingIntent.getService(context,0,i,0);
|
||||||
|
|
||||||
|
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
|
||||||
|
|
||||||
|
if(isOn){
|
||||||
|
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),
|
||||||
|
NOTIFICATION_INTERVAL,pi);
|
||||||
|
}else{
|
||||||
|
alarmManager.cancel(pi);
|
||||||
|
pi.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,132 @@
|
|||||||
|
package com.example.myapplication.weather;
|
||||||
|
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.TextWatcher;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.example.myapplication.R;
|
||||||
|
|
||||||
|
public class SettingActivity extends AppCompatActivity {
|
||||||
|
private EditText location;
|
||||||
|
private TextView unit_text;
|
||||||
|
private TextView send_text;
|
||||||
|
private LinearLayout page;
|
||||||
|
private LinearLayout unit;
|
||||||
|
private LinearLayout send;
|
||||||
|
private String city;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_setting);
|
||||||
|
|
||||||
|
location = (EditText) findViewById(R.id.location);
|
||||||
|
unit = (LinearLayout)findViewById(R.id.unit);
|
||||||
|
page = (LinearLayout)findViewById(R.id.page);
|
||||||
|
unit_text = (TextView)findViewById(R.id.unit_text);
|
||||||
|
send = (LinearLayout)findViewById(R.id.send);
|
||||||
|
send_text = (TextView)findViewById(R.id.send_text);
|
||||||
|
|
||||||
|
SharedPreferences pref = getSharedPreferences("setting",MODE_PRIVATE);
|
||||||
|
location.setText(pref.getString("city","北京"));
|
||||||
|
unit_text.setText(pref.getString("unit","摄氏度"));
|
||||||
|
send_text.setText(pref.getString("send","是"));
|
||||||
|
|
||||||
|
page.setOnClickListener(new View.OnClickListener(){
|
||||||
|
public void onClick(View v){
|
||||||
|
location.clearFocus();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
location.addTextChangedListener(new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
city = s.toString();
|
||||||
|
SharedPreferences.Editor editor = getSharedPreferences("setting",MODE_PRIVATE).edit();
|
||||||
|
editor.putString("city",city);
|
||||||
|
editor.commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
unit.setOnClickListener(new View.OnClickListener(){
|
||||||
|
public void onClick(View v){
|
||||||
|
click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
send.setOnClickListener(new View.OnClickListener(){
|
||||||
|
public void onClick(View v){
|
||||||
|
click2();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//点击按钮弹出一个单选对话框
|
||||||
|
public void click() {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle("请选择温度单位");
|
||||||
|
final String items[] = {"摄氏度","华氏度"};
|
||||||
|
|
||||||
|
//-1代表没有条目被选中
|
||||||
|
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
//1.把选中的条目取出来
|
||||||
|
String item = items[which];
|
||||||
|
Toast.makeText(getApplicationContext(),item.toString(),Toast.LENGTH_LONG).show();
|
||||||
|
unit_text.setText(item.toString());
|
||||||
|
SharedPreferences.Editor editor = getSharedPreferences("setting",MODE_PRIVATE).edit();
|
||||||
|
editor.putString("unit",item.toString());
|
||||||
|
editor.commit();
|
||||||
|
//2.然后把对话框关闭
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//一样要show
|
||||||
|
builder.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void click2() {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle("请选择是否开启通知");
|
||||||
|
final String items[] = {"是","否"};
|
||||||
|
|
||||||
|
//-1代表没有条目被选中
|
||||||
|
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
//1.把选中的条目取出来
|
||||||
|
String item = items[which];
|
||||||
|
Toast.makeText(getApplicationContext(),item.toString(),Toast.LENGTH_LONG).show();
|
||||||
|
send_text.setText(item.toString());
|
||||||
|
SharedPreferences.Editor editor = getSharedPreferences("setting",MODE_PRIVATE).edit();
|
||||||
|
editor.putString("send",item.toString());
|
||||||
|
editor.commit();
|
||||||
|
//2.然后把对话框关闭
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//一样要show
|
||||||
|
builder.show();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.example.myapplication.weather;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
|
||||||
|
public abstract class SingleFragmentActivity extends AppCompatActivity {
|
||||||
|
protected abstract Fragment createFragment();
|
||||||
|
protected abstract int getLayoutId();
|
||||||
|
protected abstract int getFragmentId();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(getLayoutId());
|
||||||
|
|
||||||
|
FragmentManager fm = getSupportFragmentManager();
|
||||||
|
Fragment fragment = fm.findFragmentById(getFragmentId());
|
||||||
|
|
||||||
|
if(fragment == null){
|
||||||
|
fragment = createFragment();
|
||||||
|
fm.beginTransaction().
|
||||||
|
add(getFragmentId(),fragment)
|
||||||
|
.commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.example.myapplication.weather;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
|
import com.example.myapplication.R;
|
||||||
|
|
||||||
|
public class WeatherDetailActivity extends SingleFragmentActivity{
|
||||||
|
public static final String EXTRA_WEATHER_ITEM = "com.example.weather.weatherItem";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Fragment createFragment() {
|
||||||
|
WeatherItem weatherItem = (WeatherItem)getIntent().getSerializableExtra(EXTRA_WEATHER_ITEM);
|
||||||
|
return WeatherDetailFragment.newInstance(weatherItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLayoutId() {
|
||||||
|
return R.layout.activity_detail;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getFragmentId() {
|
||||||
|
return R.id.detail_container;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Intent newIntent(Context packageContext, WeatherItem weatherItem){
|
||||||
|
Intent intent = new Intent(packageContext,WeatherDetailActivity.class);
|
||||||
|
intent.putExtra(EXTRA_WEATHER_ITEM,weatherItem);
|
||||||
|
return intent;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,133 @@
|
|||||||
|
package com.example.myapplication.weather;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuInflater;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
|
import com.example.myapplication.R;
|
||||||
|
|
||||||
|
public class WeatherDetailFragment extends Fragment {
|
||||||
|
private WeatherItem mWeatherItem; //用来设置UI
|
||||||
|
|
||||||
|
private TextView mDeatilDate;
|
||||||
|
private TextView mDetailMaxTemp;
|
||||||
|
private TextView mDetailMinTemp;
|
||||||
|
private ImageView mDetialIcon;
|
||||||
|
private TextView mDetailDesc;
|
||||||
|
private TextView mDetailHumidity;
|
||||||
|
private TextView mDetailPressure;
|
||||||
|
private TextView mDetailWind;
|
||||||
|
|
||||||
|
private static final String TAG = "WeatherDetailFragment";
|
||||||
|
private static final String ARG_ITEM = "args_item";
|
||||||
|
private String unit_text = "°";
|
||||||
|
|
||||||
|
public static WeatherDetailFragment newInstance(WeatherItem weatherItem) {
|
||||||
|
Bundle args = new Bundle();
|
||||||
|
args.putSerializable(ARG_ITEM,weatherItem);
|
||||||
|
WeatherDetailFragment fragment = new WeatherDetailFragment();
|
||||||
|
fragment.setArguments(args);
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取drawable图标资源的id
|
||||||
|
public int getIconId(Context mContext, String icon){
|
||||||
|
int i= getResources().getIdentifier(icon, "drawable", mContext.getPackageName()) ;
|
||||||
|
if(i>0){
|
||||||
|
Log.i(TAG,"Success to get drawable resoure");
|
||||||
|
}else{
|
||||||
|
Log.i(TAG,"Fail to get drawable resoure");
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setHasOptionsMenu(true);
|
||||||
|
mWeatherItem = (WeatherItem) getArguments().getSerializable(ARG_ITEM);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
View v = inflater.inflate(R.layout.fragment_weather_detail,container,false);
|
||||||
|
if(getActivity().getSharedPreferences("setting",Context.MODE_PRIVATE).getString("unit","摄氏度")=="华氏度"){
|
||||||
|
unit_text = "℉";
|
||||||
|
}
|
||||||
|
|
||||||
|
mDeatilDate = (TextView) v.findViewById(R.id.detail_date);
|
||||||
|
mDetailMaxTemp = (TextView) v.findViewById(R.id.detail_max_temp);
|
||||||
|
mDetailMinTemp = (TextView) v.findViewById(R.id.detail_min_temp);
|
||||||
|
mDetialIcon = (ImageView) v.findViewById(R.id.detail_icon);
|
||||||
|
mDetailHumidity = (TextView) v.findViewById(R.id.detail_humidity);
|
||||||
|
mDetailPressure = (TextView) v.findViewById(R.id.detail_pressure);
|
||||||
|
mDetailWind = (TextView) v.findViewById(R.id.detail_wind);
|
||||||
|
mDetailDesc = (TextView) v.findViewById(R.id.detail_desc);
|
||||||
|
|
||||||
|
mDeatilDate.setText(mWeatherItem.getData());
|
||||||
|
mDetailMaxTemp.setText(mWeatherItem.getMax_temp()+unit_text);
|
||||||
|
mDetailMinTemp.setText(mWeatherItem.getMin_temp()+unit_text);
|
||||||
|
String icon = "a"+mWeatherItem.getIcon();
|
||||||
|
int id = getIconId(getContext(),icon);
|
||||||
|
Drawable drawable = getResources().getDrawable(id);
|
||||||
|
mDetialIcon.setImageDrawable(drawable);
|
||||||
|
mDetailHumidity.setText("Humidity: "+mWeatherItem.getHumidity()+" %");
|
||||||
|
mDetailPressure.setText("Pressure: "+mWeatherItem.getPressure()+" hPa");
|
||||||
|
mDetailWind.setText("Wind: "+mWeatherItem.getWind()+" km/h SE");
|
||||||
|
mDetailDesc.setText(mWeatherItem.getText());
|
||||||
|
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String createMessage(){
|
||||||
|
String message = "";
|
||||||
|
message += "今天的天气状况为:"+mWeatherItem.getText();
|
||||||
|
message += " 今天的最高温度是: "+mWeatherItem.getMax_temp();
|
||||||
|
message += " 今天的最低温度是: "+mWeatherItem.getMin_temp();
|
||||||
|
message += " 今天的湿度为: "+mWeatherItem.getHumidity();
|
||||||
|
message += " 今天的风速为:"+mWeatherItem.getWind();
|
||||||
|
message += " 今天的气压为:"+mWeatherItem.getPressure();
|
||||||
|
message += " 希望您拥有美好的一天!";
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
|
||||||
|
super.onCreateOptionsMenu(menu, inflater);
|
||||||
|
if(getActivity().findViewById(R.id.fragment_container)==null){ //是手机模式
|
||||||
|
inflater.inflate(R.menu.fragment_detail,menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
|
switch (item.getItemId()){
|
||||||
|
case R.id.menu_setting:
|
||||||
|
Intent intent = new Intent(getActivity(),SettingActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
|
return true;
|
||||||
|
case R.id.menu_share:
|
||||||
|
Intent i = new Intent(Intent.ACTION_SEND);
|
||||||
|
i.setType("text/plain");
|
||||||
|
i.putExtra(Intent.EXTRA_TEXT,createMessage());
|
||||||
|
startActivity(i);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return super.onOptionsItemSelected(item);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,78 @@
|
|||||||
|
package com.example.myapplication.weather;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class WeatherItem implements Serializable {
|
||||||
|
private String data; //天气日期
|
||||||
|
private String max_temp; //最高温度
|
||||||
|
private String min_temp; //最低温度
|
||||||
|
private String text; //天气描述
|
||||||
|
private String humidity; //适度
|
||||||
|
private String pressure; //气压
|
||||||
|
private String wind; //风力
|
||||||
|
private String icon; //图标
|
||||||
|
|
||||||
|
public String getIcon() {
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIcon(String icon) {
|
||||||
|
this.icon = icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setData(String data) {
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMax_temp() {
|
||||||
|
return max_temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMax_temp(String max_temp) {
|
||||||
|
this.max_temp = max_temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMin_temp() {
|
||||||
|
return min_temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMin_temp(String min_temp) {
|
||||||
|
this.min_temp = min_temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getText() {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setText(String text) {
|
||||||
|
this.text = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHumidity() {
|
||||||
|
return humidity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHumidity(String humidity) {
|
||||||
|
this.humidity = humidity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPressure() {
|
||||||
|
return pressure;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPressure(String pressure) {
|
||||||
|
this.pressure = pressure;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWind() {
|
||||||
|
return wind;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWind(String wind) {
|
||||||
|
this.wind = wind;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,142 @@
|
|||||||
|
package com.example.myapplication;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.provider.ContactsContract;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
|
||||||
|
public class yijiantong extends AppCompatActivity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_yijiantong);
|
||||||
|
if (shouldAskPermissions()) {
|
||||||
|
askPermissions();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Button button1 = findViewById(R.id.button1);
|
||||||
|
//点击
|
||||||
|
button1.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Uri uri10 = Uri.parse("alipayqr://platformapi/startapp?saId=20000067&chInfo=ch_desktop&url=https%3A%2F%2F68687564.h5app.alipay.com%2Fwww%2Findex.html");
|
||||||
|
Intent intent10 = new Intent(Intent.ACTION_VIEW, uri10);
|
||||||
|
startActivity(intent10);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Button button2 = findViewById(R.id.button2);
|
||||||
|
//点击
|
||||||
|
button2.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Uri uri = Uri.parse("alipayqr://platformapi/startapp?saId=2021002170600786");
|
||||||
|
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||||
|
startActivity(intent);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button button3 = findViewById(R.id.button3);
|
||||||
|
//点击
|
||||||
|
button3.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Uri uri = Uri.parse("alipayqr://platformapi/startapp?saId=2021001123608001");
|
||||||
|
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||||
|
startActivity(intent);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button button4 = findViewById(R.id.button4);
|
||||||
|
//点击
|
||||||
|
button4.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Uri uri = Uri.parse("alipayqr://platformapi/startapp?saId=10000007");
|
||||||
|
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||||
|
startActivity(intent);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
Button button5 = findViewById(R.id.button5);
|
||||||
|
//点击
|
||||||
|
button5.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Uri uri1 = Uri.parse("alipayqr://platformapi/startapp?saId=20000056");
|
||||||
|
Intent intent1 = new Intent(Intent.ACTION_VIEW, uri1);
|
||||||
|
startActivity(intent1);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button button6 = findViewById(R.id.button6);
|
||||||
|
//点击
|
||||||
|
button6.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Uri uri2 = Uri.parse("alipayqr://platformapi/startapp?saId=20000123");
|
||||||
|
Intent intent2 = new Intent(Intent.ACTION_VIEW, uri2);
|
||||||
|
startActivity(intent2);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button button7 = findViewById(R.id.button8);
|
||||||
|
//点击
|
||||||
|
button7.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
Intent addIntent = new Intent(Intent.ACTION_INSERT, Uri.withAppendedPath(Uri.parse("content://com.android.contacts"), "contacts"));
|
||||||
|
addIntent.setType("vnd.android.cursor.dir/person");
|
||||||
|
addIntent.setType("vnd.android.cursor.dir/contact");
|
||||||
|
addIntent.setType("vnd.android.cursor.dir/raw_contact");
|
||||||
|
boolean number = false;
|
||||||
|
addIntent.putExtra(ContactsContract.Intents.Insert.NAME, number);
|
||||||
|
|
||||||
|
boolean numberForNewConstant = false;
|
||||||
|
addIntent.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE, numberForNewConstant);
|
||||||
|
startActivity(addIntent);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Button button8 = findViewById(R.id.button7);
|
||||||
|
//点击
|
||||||
|
button8.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
//调用系统方法拨打电话
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setAction(Intent.ACTION_CALL);
|
||||||
|
intent.setData(Uri.parse("tel:" + "15607989193"));
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean askPermissions() {
|
||||||
|
return (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean shouldAskPermissions() {
|
||||||
|
String[] permissions = {
|
||||||
|
"android.permission.CALL_PHONE"
|
||||||
|
};
|
||||||
|
int requestCode = 200;
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
requestPermissions(permissions, requestCode);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.example.myapplication;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
public class zhaoxun extends AppCompatActivity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_zhaoxun);
|
||||||
|
Button buttonitem=findViewById(R.id.myitem);
|
||||||
|
Button buttonmap=findViewById(R.id.map);
|
||||||
|
buttonitem.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {//Intent
|
||||||
|
/* Toast.makeText(zhaoxun.this,"正在打开地图",Toast.LENGTH_SHORT).show();
|
||||||
|
Intent intent=new Intent(zhaoxun.this,MapActivity1.class);
|
||||||
|
startActivity(intent);*/
|
||||||
|
Intent intent=new Intent(zhaoxun.this,itemfound.class);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
buttonmap.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {//Intent
|
||||||
|
Toast.makeText(zhaoxun.this,"正在打开地图",Toast.LENGTH_SHORT).show();
|
||||||
|
Intent intent=new Intent(zhaoxun.this,MapActivity1.class);
|
||||||
|
startActivity(intent);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:aapt="http://schemas.android.com/aapt"
|
||||||
|
android:width="108dp"
|
||||||
|
android:height="108dp"
|
||||||
|
android:viewportWidth="108"
|
||||||
|
android:viewportHeight="108">
|
||||||
|
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
|
||||||
|
<aapt:attr name="android:fillColor">
|
||||||
|
<gradient
|
||||||
|
android:endX="85.84757"
|
||||||
|
android:endY="92.4963"
|
||||||
|
android:startX="42.9492"
|
||||||
|
android:startY="49.59793"
|
||||||
|
android:type="linear">
|
||||||
|
<item
|
||||||
|
android:color="#44000000"
|
||||||
|
android:offset="0.0" />
|
||||||
|
<item
|
||||||
|
android:color="#00000000"
|
||||||
|
android:offset="1.0" />
|
||||||
|
</gradient>
|
||||||
|
</aapt:attr>
|
||||||
|
</path>
|
||||||
|
<path
|
||||||
|
android:fillColor="#FFFFFF"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
|
||||||
|
android:strokeWidth="1"
|
||||||
|
android:strokeColor="#00000000" />
|
||||||
|
</vector>
|
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 5.2 KiB |