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
|
||||
|
||||
# 该系统为老人生活小助手系统,主要由一键通,天气预测,找寻,语音识别四个模块构成,有效迅速的解决了老人日常生活中遇到的许多麻烦,帮助老人在日常生活中生活的更加方便。同时填补了目前市场上的空白。
|
||||
# 此软件构建在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 |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 6.8 KiB |