Compare commits

..

2 Commits

Author SHA1 Message Date
omar 2cf484ec22 test
3 years ago
omar 6bd22eba89 需求文档
3 years ago

@ -0,0 +1 @@
111

@ -1,3 +1,2 @@
# gitproject
# 该系统为老人生活小助手系统,主要由一键通,天气预测,找寻,语音识别四个模块构成,有效迅速的解决了老人日常生活中遇到的许多麻烦,帮助老人在日常生活中生活的更加方便。同时填补了目前市场上的空白。
# 此软件构建在andorid 7.0及以上的系统中

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

@ -1,115 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!--连接网络权限,用于执行云端语音能力 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!--读取网络信息状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--获取当前wifi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问系统接口提供的卫星定位信息 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于访问wifi网络信息wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.VIBRATE" /> <!-- 获取摄像头权限用于AR步行导航 -->
<uses-permission android:name="android.permission.CAMERA" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name=".SpeechApplication"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication"
tools:targetApi="31">
<activity
android:name=".jiankang"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".yuyin"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".zhaoxun"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".yijiantong"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".WNaviGuideActivity"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".itemfound"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".MapActivity1"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" />
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="pFUGlHMArXB22vUlCvWuElgEDX6fhQU7" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity android:name="com.example.myapplication.weather.MainActivity1"/>
<activity android:name="com.example.myapplication.weather.WeatherDetailActivity"/>
<activity android:name="com.example.myapplication.weather.SettingActivity"/>
<service android:name="com.example.myapplication.weather.NotificationService"/>
</application>
</manifest>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

@ -1,117 +0,0 @@
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();
}
}

@ -1,69 +0,0 @@
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);
}
});
}
}

@ -1,221 +0,0 @@
package com.example.myapplication;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
/*
public class MapActivity1 extends Activity {
private MapView mMapView = null;
private BaiduMap mBaiduMap;
private LocationClient mLocationClient;
private BitmapDescriptor mMarker;
private boolean ifFrist = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_map1);
mMapView = findViewById(R.id.bmapview);
mBaiduMap = mMapView.getMap();
mLocationClient = new LocationClient(this);
MyLocationListener myLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(myLocationListener);
//覆盖物 用于显示当前位置
mMarker = BitmapDescriptorFactory.fromResource(com.baidu.bikenavi.R.drawable.icon_start_walk);
mBaiduMap.setMyLocationEnabled(true);
LocationClientOption option = new LocationClientOption();
//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);
option.setIsNeedAddress(true);
mLocationClient.setLocOption(option);
mLocationClient.start();
}
public class MyLocationListener extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
//mapView 销毁后不在处理新接收的位置
if (location == null || mMapView == null){
return;
}
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息顺时针0-360
.latitude(location.getLatitude())
.longitude(location.getLongitude())
.direction(location.getDirection())
.build();
mBaiduMap.setMyLocationData(locData);
MyLocationConfiguration configuration = new MyLocationConfiguration(
MyLocationConfiguration.LocationMode.NORMAL, false, mMarker);
mBaiduMap.setMyLocationConfiguration(configuration);
if (ifFrist) {
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(ll);
builder.zoom(18.0f);
mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
//放大层级
ifFrist = false;
}
}
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView=findViewById(R.id.bmapview);
mMapView.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
mLocationClient.stop();
mMapView.onDestroy();
}
}
*/
public class MapActivity1 extends AppCompatActivity {
private BitmapDescriptor mMarker;
LocationClient mLocationClient; //定位客户端
MapView mapView; //Android Widget地图控件
BaiduMap baiduMap;
boolean isFirstLocate = true;
TextView tv_Lat; //纬度
TextView tv_Lon; //经度
TextView tv_Add; //地址
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//如果没有定位权限,动态请求用户允许使用该权限
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}else {
requestLocation();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
// super.onRequestPermissionsResult(requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1:
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "没有定位权限!", Toast.LENGTH_LONG).show();
finish();
} else {
requestLocation();
}
}
}
private void requestLocation() {
initLocation();
mLocationClient.start();
}
private void initLocation() { //初始化
mLocationClient = new LocationClient(getApplicationContext());
mLocationClient.registerLocationListener(new MyLocationListener());
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_map1);
// mMarker = BitmapDescriptorFactory.fromResource(com.baidu.bikenavi.R.drawable.icon_start_walk);
mapView = findViewById(R.id.bmapview);
baiduMap = mapView.getMap();
tv_Lat = findViewById(R.id.tv_Lat);
tv_Lon = findViewById(R.id.tv_Lon);
tv_Add = findViewById(R.id.tv_Add);
LocationClientOption option = new LocationClientOption();
//设置扫描时间间隔
option.setScanSpan(1000);
//设置定位模式,三选一
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
//设置需要地址信息
option.setIsNeedAddress(true);
//保存定位参数
mLocationClient.setLocOption(option);
}
//内部类,百度位置监听器
private class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
tv_Lat.setText(bdLocation.getLatitude()+"");
tv_Lon.setText(bdLocation.getLongitude()+"");
tv_Add.setText(bdLocation.getAddrStr());
if(bdLocation.getLocType()==BDLocation.TypeGpsLocation || bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){
navigateTo(bdLocation);
}
}
MyLocationConfiguration configuration = new MyLocationConfiguration(
MyLocationConfiguration.LocationMode.NORMAL, false, mMarker);
//
// baiduMap.setMyLocationConfiguration(configuration);
}
private void navigateTo(BDLocation bdLocation) {
if(isFirstLocate){
LatLng ll = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());
MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);
baiduMap.animateMapStatus(update);
isFirstLocate = false;
}
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView=findViewById(R.id.bmapview);
mapView.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
mLocationClient.stop();
mapView.onDestroy();
}
}

@ -1,18 +0,0 @@
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();
}
}

@ -1,231 +0,0 @@
package com.example.myapplication;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.baidu.mapapi.walknavi.WalkNavigateHelper;
import com.baidu.mapapi.walknavi.adapter.IWNaviStatusListener;
import com.baidu.mapapi.walknavi.adapter.IWRouteGuidanceListener;
import com.baidu.mapapi.walknavi.adapter.IWTTSPlayer;
import com.baidu.mapapi.walknavi.model.RouteGuideKind;
import com.baidu.platform.comapi.walknavi.WalkNaviModeSwitchListener;
import com.baidu.platform.comapi.walknavi.widget.ArCameraView;
public class WNaviGuideActivity extends Activity {
private final static String TAG = WNaviGuideActivity.class.getSimpleName();
private WalkNavigateHelper mNaviHelper;
private boolean isPreSPEAKtotal = true;
private String orient = "";
@Override
protected void onDestroy() {
super.onDestroy();
mNaviHelper.quit();
}
@Override
protected void onResume() {
super.onResume();
mNaviHelper.resume();
}
@Override
protected void onPause() {
super.onPause();
mNaviHelper.pause();
}
Handler handler = new Handler() {
@SuppressLint("HandlerLeak")
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0x001) {
ChangeState();
handler.sendEmptyMessageDelayed(0x001, 45000);
}
if (msg.what == 0x002) {
handler.sendEmptyMessageDelayed(0x002, 30000);
}
if (msg.what == 0x003) {
startActivity(new Intent(WNaviGuideActivity.this, MainActivity.class));
}
}
};
private void ChangeState() {
isPreSPEAKtotal = true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNaviHelper = WalkNavigateHelper.getInstance();
try {
View view = mNaviHelper.onCreate(WNaviGuideActivity.this);
if (view != null) {
setContentView(view);
}
} catch (Exception e) {
e.printStackTrace();
}
//设置步行导航状态监听
mNaviHelper.setWalkNaviStatusListener(new IWNaviStatusListener() {
@Override
public void onWalkNaviModeChange(int mode, WalkNaviModeSwitchListener listener) {
Log.d("======", "onWalkNaviModeChange : " + mode);
mNaviHelper.switchWalkNaviMode(WNaviGuideActivity.this, mode, listener);
}
/* @Description: 退
* @Author: LiY ue
*/
@Override
public void onNaviExit() {
Log.d("======", "onNaviExit");
handler.removeMessages(0x001);
handler.removeMessages(0x002);
handler.removeMessages(0x003);
}
});
mNaviHelper.setTTsPlayer(new IWTTSPlayer() {
@Override
public int playTTSText(final String s, boolean b) {
Log.d(TAG, "tts: " + s);
return 0;
}
});
boolean startResult = mNaviHelper.startWalkNavi(WNaviGuideActivity.this);
Log.e(TAG, "startWalkNavi result : " + startResult);
//设置路线指引监听
mNaviHelper.setRouteGuidanceListener(this, new
IWRouteGuidanceListener() {
@Override
public void onRouteGuideIconUpdate(Drawable icon) {
}
@Override
public void onRouteGuideKind(RouteGuideKind routeGuideKind) {
Log.d("======", "onRouteGuideKind: " + routeGuideKind);
if (routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_PassRoad_Left || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_PassRoad_Right || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_Right_PassRoad_Front || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_Right_PassRoad_UTurn)
if (routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Front || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Left || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Left_Front || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Right || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Right_Back || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Right_Front){
Log.d("========", "onRouteGuideKind: aaaaaa");
}
}
/**
* @Description:
*/
@Override
public void onRoadGuideTextUpdate(CharSequence charSequence, CharSequence
charSequence1) {
Log.d(TAG, "onRoadGuideTextUpdate charSequence=: " + charSequence + " charSequence1 = : " +
charSequence1);
orient = charSequence.toString() + charSequence1.toString();
}
@Override
public void onRemainDistanceUpdate(CharSequence charSequence) {
Log.d(TAG, "onRemainDistanceUpdate: charSequence = :" + charSequence);
if (isPreSPEAKtotal) {
}
}
@Override
public void onRemainTimeUpdate(CharSequence charSequence) {
Log.d(TAG, "onRemainTimeUpdate: charSequence = :" + charSequence);
if (isPreSPEAKtotal) {
isPreSPEAKtotal = false;
}
}
@Override
public void onGpsStatusChange(CharSequence charSequence, Drawable drawable) {
Log.d(TAG, "onGpsStatusChange: charSequence = :" + charSequence);
}
@Override
public void onRouteFarAway(CharSequence charSequence, Drawable drawable) {
Log.d(TAG, "onRouteFarAway: charSequence = :" + charSequence);
}
@Override
public void onRoutePlanYawing(CharSequence charSequence, Drawable drawable) {
Log.d(TAG, "onRoutePlanYawing: charSequence = :" + charSequence);
}
@Override
public void onReRouteComplete() {
}
@Override
public void onArriveDest() {
handler.sendEmptyMessageDelayed(0x003, 6000);
}
@Override
public void onIndoorEnd(Message msg) {
}
@Override
public void onFinalEnd(Message msg) {
}
@Override
public void onVibrate() {
}
});
handler.sendEmptyMessage(0x001);
handler.sendEmptyMessage(0x002);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == ArCameraView.WALK_AR_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
Toast.makeText(WNaviGuideActivity.this, "没有相机权限,请打开后重试", Toast.LENGTH_SHORT).show();
} else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mNaviHelper.startCameraAndSetMapView(WNaviGuideActivity.this);
}
}
}
}

@ -1,224 +0,0 @@
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");
}
});
}
}

@ -1,14 +0,0 @@
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);
}
}

@ -1,24 +0,0 @@
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) {
}
}

@ -1,103 +0,0 @@
package com.example.myapplication.weather;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
//获取数据的二进制数组/字符串形式
//获取JSON数组
//解析JSON数组变成WeatherItem的数组形式
public class FlickrFetcher {
public static final String TAG = "FlickrFetcher";
public byte[] getUrlBytes(String urlSpec) throws Exception{
URL url = new URL(urlSpec);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// connection.setInstanceFollowRedirects(false); //跟踪重定向
// String redirect = connection.getHeaderField("Location");
// if (redirect != null){
// connection = (HttpURLConnection)new URL(redirect).openConnection();
// }
try{
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream in = connection.getInputStream();
if(connection.getResponseCode() != HttpURLConnection.HTTP_OK){
throw new IOException(connection.getResponseMessage() + " :with "+urlSpec);
}
int bytesRead = 0;
byte[] buffer = new byte[1024];
while((bytesRead = in.read(buffer)) > 0){
out.write(buffer,0,bytesRead);
}
out.close();
return out.toByteArray();
}finally {
connection.disconnect();
}
}
public String getUrlString(String urlSpec)throws Exception{
return new String(getUrlBytes(urlSpec));
}
public List<WeatherItem> fetchItems(String urlSpec){
List<WeatherItem> items = new ArrayList<>();
try{
String jsonString = getUrlString(urlSpec);
Log.i(TAG,"result: "+jsonString);
JSONObject jsonBody = new JSONObject(jsonString);
parseItems(items,jsonBody);
}catch (Exception e){
Log.i(TAG,"Failed!"+e);
}
return items;
}
public JSONObject fetchCity(String urlSpec){
String locationID = "";
JSONObject jsonObject = null;
try{
String jsonString = getUrlString(urlSpec);
Log.i(TAG,"result: "+jsonString);
JSONObject jsonBody = new JSONObject(jsonString);
JSONArray locationJsonArray = jsonBody.getJSONArray("location");
jsonObject = locationJsonArray.getJSONObject(0);
// locationID = locationJsonArray.getJSONObject(0).getString("id");
// String lat = locationJsonArray.getJSONObject(0).getString("lat");
// String lon = locationJsonArray.getJSONObject(0).getString("lon");
}catch (Exception e){
Log.i(TAG,"Failed!"+e);
}
return jsonObject;
}
private void parseItems(List<WeatherItem> items,JSONObject jsonBody) throws Exception{ //将从url获得的json转换成MarsItem
JSONArray weatherJsonArray = jsonBody.getJSONArray("daily");
for(int i=0;i<weatherJsonArray.length();i++){
JSONObject weatherJsonObject = weatherJsonArray.getJSONObject(i);
WeatherItem item = new WeatherItem();
item.setData(weatherJsonObject.getString("fxDate"));
item.setMax_temp(weatherJsonObject.getString("tempMax"));
item.setMin_temp(weatherJsonObject.getString("tempMin"));
item.setText(weatherJsonObject.getString("textDay"));
item.setHumidity(weatherJsonObject.getString("humidity"));
item.setPressure(weatherJsonObject.getString("pressure"));
item.setWind(weatherJsonObject.getString("windSpeedDay"));
item.setIcon(weatherJsonObject.getString("iconDay"));
items.add(item);
}
}
}

@ -1,38 +0,0 @@
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();
}
}
}

@ -1,95 +0,0 @@
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();
}
}
}

@ -1,132 +0,0 @@
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();
}
}

@ -1,30 +0,0 @@
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();
}
}
}

@ -1,34 +0,0 @@
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;
}
}

@ -1,133 +0,0 @@
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);
}
}

@ -1,372 +0,0 @@
package com.example.myapplication.weather;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.AsyncTask;
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 androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.myapplication.R;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class WeatherFragment extends Fragment {
private static final String TAG="WeatherFragment";
private RecyclerView mWeatherRecyclerView;
//今日天气板块
private TextView mTodayTime;
private TextView mTodayMaxTemp;
private TextView mTodayMinTemp;
private ImageView mTodayIcon;
private TextView mTodayIconDesc;
private String location = "北京"; //记录当前的城市ID如果有变化需要刷新你页面
private String temp_unit = "摄氏度";
private String unit_text = "°";
private List<WeatherItem> mItems = new ArrayList<>(); //七天的天气详情对象
private Callbacks mCallbacks;
private SQLiteDatabase mDatabase;
public static WeatherFragment newInstance(){
return new WeatherFragment();
}
/*回调函数fragment调用activity的函数这样点击列表后方便出发事件不应该用fragment执行其他fragment的细节*/
public interface Callbacks{
void onWeatherSelected(WeatherItem weatherItem);
}
public static Intent newIntent(Context context){
Intent i = new Intent(context, MainActivity1.class);
return i;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mCallbacks = (Callbacks)activity;
}
@Override
public void onDetach() {
super.onDetach();
mCallbacks = null;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences.Editor editor = getActivity().getSharedPreferences("setting",Context.MODE_PRIVATE).edit();
setRetainInstance(true);
//设置其他选项让manager知道fragment替activity进行处理
setHasOptionsMenu(true);
//创建数据库
mDatabase = new DatabaseHelper(getActivity()).getWritableDatabase();
new FetchItemsTask().execute(); //异步执行获取网站上的json内容
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_weather,container,false);
mWeatherRecyclerView = (RecyclerView) v.findViewById(R.id.fragment_weather_recycler_view);
mWeatherRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
//绑定今日天气模块
mTodayTime = (TextView)v.findViewById(R.id.today_time);
mTodayMaxTemp = (TextView)v.findViewById(R.id.today_max_temp);
mTodayMinTemp = (TextView)v.findViewById(R.id.today_min_temp);
mTodayIcon = (ImageView)v.findViewById(R.id.today_icon);
mTodayIconDesc = (TextView)v.findViewById(R.id.today_icon_desc);
return v;
}
@Override
public void onResume() {
super.onResume();
SharedPreferences pref = getActivity().getSharedPreferences("setting",Context.MODE_PRIVATE);
String city = pref.getString("city","北京");
String unit = pref.getString("unit","摄氏度");
String send = pref.getString("send","是");
if(city!=location){ //在重新启动页面的时候,如果地址改变了,需要刷新
location = city;
new FetchItemsTask().execute(); //异步执行获取网站上的json内容
return;
}
if(unit!=temp_unit){ //在重新启动页面的时候,如果地址改变了,需要刷新
temp_unit = unit;
new FetchItemsTask().execute(); //异步执行获取网站上的json内容
return;
}
if (send=="是"){
//开启后台服务,启动定时器,发送通知消息
NotificationService.setServiceAlarm(getActivity(),true);
}else{
NotificationService.setServiceAlarm(getActivity(),false);
}
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment_weather,menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
SharedPreferences pref = getActivity().getSharedPreferences("setting",Context.MODE_PRIVATE);
switch (item.getItemId()){
case R.id.menu_setting:
Intent intent = new Intent(getActivity(),SettingActivity.class);
startActivity(intent);
return true;
case R.id.menu_map:
//调用腾讯地图
Intent intent_txmap = new Intent();
System.out.println("lat is :"+pref.getString("lat","39.90498"));
System.out.println("lon is :"+pref.getString("lon","116.40528"));
intent_txmap.setData(Uri.parse("qqmap://map/geocoder?coord="+
pref.getString("lat","39.90498")+
"," +pref.getString("lon","116.40528")+
"&referer=BJWBZ-EXJ3U-IUGV4-4A74J-754OJ-KXFVX"));
startActivity(intent_txmap);
}
return super.onOptionsItemSelected(item);
}
//获取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;
}
// 异步从URL获取天气对象
private class FetchItemsTask extends AsyncTask<Void,Void, List<WeatherItem>> {
SharedPreferences.Editor editor = getActivity().getSharedPreferences("setting",Context.MODE_PRIVATE).edit();
SharedPreferences pref = getActivity().getSharedPreferences("setting",Context.MODE_PRIVATE);
String city = pref.getString("city","北京");
String unit = pref.getString("unit","摄氏度");
String city_url = "https://geoapi.qweather.com/v2/city/lookup?location="+city+"&key=6b01a87a7f3347a19c7b6b84f2ba35e3";
@Override
protected List<WeatherItem> doInBackground(Void... voids) {
List<WeatherItem> weatherItems = new ArrayList<>();
unit_text = "°";
if(unit=="华氏度"){
unit_text = "℉";
}
System.out.println("network is :"+isNetworkConnected(getActivity().getApplicationContext()));
//如果没有网络连接,从数据库获取信息
if(!isNetworkConnected(getActivity().getApplicationContext())){
Cursor cursor = mDatabase.query ("weather",null,null,null,null,null,null);
cursor.moveToFirst();
for(int i=0;i<cursor.getCount();i++){
WeatherItem item = new WeatherItem();
item.setData(cursor.getString(cursor.getColumnIndex("date")));
item.setMax_temp(cursor.getString(cursor.getColumnIndex("max_temp")));
item.setMin_temp(cursor.getString(cursor.getColumnIndex("min_temp")));
item.setText(cursor.getString(cursor.getColumnIndex("text")));
item.setHumidity(cursor.getString(cursor.getColumnIndex("humidity")));
item.setPressure(cursor.getString(cursor.getColumnIndex("pressure")));
item.setWind(cursor.getString(cursor.getColumnIndex("wind")));
item.setIcon(cursor.getString(cursor.getColumnIndex("icon")));
weatherItems.add(item);
cursor.moveToNext();
}
return weatherItems;
}
//有网络
//String locationID = new FlickrFetcher().fetchCity(city_url);
JSONObject jsonObject = new FlickrFetcher().fetchCity(city_url);
String locationID = "";
try{
locationID = jsonObject.getString("id");
editor.putString("lat",jsonObject.getString("lat"));
System.out.println("input lat is: "+jsonObject.getString("lat"));
editor.putString("lon",jsonObject.getString("lon"));
editor.commit();
}catch (Exception e){}
String url = "https://devapi.qweather.com/v7/weather/7d?location="+locationID+"&key=6b01a87a7f3347a19c7b6b84f2ba35e3";
if(unit=="华氏度"){
url = "https://devapi.qweather.com/v7/weather/7d?location="+locationID+"&key=6b01a87a7f3347a19c7b6b84f2ba35e3&unit=i";
}
weatherItems = new FlickrFetcher().fetchItems(url);
//删除原来的数据库,将获取的数据放入数据库
mDatabase.execSQL("drop table weather");
mDatabase.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)");
for(int i=0;i<weatherItems.size();i++){
WeatherItem item = weatherItems.get(i);
ContentValues values = new ContentValues();
values.put("date",item.getData());
values.put("max_temp",item.getMax_temp());
values.put("min_temp",item.getMin_temp());
values.put("text",item.getText());
values.put("humidity",item.getHumidity());
values.put("pressure",item.getPressure());
values.put("wind",item.getWind());
values.put("icon",item.getIcon());
mDatabase.insert("weather",null,values);
}
return weatherItems;
}
@Override
protected void onPostExecute(List<WeatherItem> weatherItems) {
mItems = weatherItems;
SharedPreferences.Editor editor = getActivity().getSharedPreferences("setting", Context.MODE_PRIVATE).edit();
//实现今天天气部分的UI
WeatherItem item = mItems.get(0);
mTodayTime.setText("Today,"+location);
mTodayMaxTemp.setText(item.getMax_temp()+unit_text);
editor.putString("max_temp",item.getMax_temp());
mTodayMinTemp.setText(item.getMin_temp()+unit_text);
editor.putString("min_temp",item.getMin_temp());
mTodayIconDesc.setText(item.getText());
editor.putString("text",item.getText());
String icon = "a"+item.getIcon();
int id = getIconId(getContext(),icon);
Drawable drawable = getResources().getDrawable(id);
mTodayIcon.setImageDrawable(drawable);
editor.commit();
//实现recyclerview部分的UI
setupAdapter();
//如果是ipad就手动更新详情页面
if(getActivity().findViewById(R.id.detail_container)!=null){
mCallbacks.onWeatherSelected(item);
}
}
}
public class WeatherHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private WeatherItem mWeatherItem;
private TextView mItemMaxWeather;
private TextView mItemMinWeather;
private ImageView mItemIcon;
private TextView mItemDate;
private TextView mItemDesc;
public void setDay(String day){
mItemDate.setText(day);
}
public WeatherHolder(View itemView){
super(itemView);
itemView.setOnClickListener(this);
mItemMaxWeather = (TextView) itemView.findViewById(R.id.item_max_weather);
mItemMinWeather = (TextView) itemView.findViewById(R.id.item_min_weather);
mItemIcon = (ImageView) itemView.findViewById(R.id.item_icon);
mItemDate = (TextView) itemView.findViewById(R.id.item_date);
mItemDesc = (TextView) itemView.findViewById(R.id.item_desc);
}
public void bindWeatherItem(WeatherItem weatherItem){
mWeatherItem = weatherItem;
mItemMaxWeather.setText(weatherItem.getMax_temp()+unit_text);
mItemMinWeather.setText(weatherItem.getMin_temp()+unit_text);
String icon = "a"+weatherItem.getIcon();
int id = getIconId(getContext(),icon);
Drawable drawable = getResources().getDrawable(id);
mItemIcon.setImageDrawable(drawable);
mItemDate.setText(weatherItem.getData());
mItemDesc.setText(weatherItem.getText());
}
//点击列表,跳转到详情页面
@Override
public void onClick(View v) {
Log.i(TAG,"click");
mCallbacks.onWeatherSelected(mWeatherItem);
}
}
private class WeatherAdaper extends RecyclerView.Adapter<WeatherHolder>{
private List<WeatherItem> mWeatherList = new ArrayList<>();
public WeatherAdaper(List<WeatherItem> items){
mWeatherList = items;
}
@Override
public int getItemCount() {
return mWeatherList.size();
}
@Override
public WeatherHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//实例化mars_item布局
LayoutInflater inflater = LayoutInflater.from(getActivity());
View view = inflater.inflate(R.layout.weather_item,parent,false);
return new WeatherHolder(view);
}
@Override
public void onBindViewHolder(@NonNull WeatherHolder holder, int position) {
WeatherItem weatherItem = mWeatherList.get(position);
holder.bindWeatherItem(weatherItem);
if(position==0){
holder.setDay("Today");
}
if(position==1){
holder.setDay("Tomorrow");
}
}
}
private void setupAdapter(){
if(isAdded()){
mWeatherRecyclerView.setAdapter(new WeatherAdaper(mItems));
}
}
//判断网络是否连接
public boolean isNetworkConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
boolean isNetworkAvailable = cm.getActiveNetwork() != null;
boolean isNetworkConnected = isNetworkAvailable && cm.getActiveNetworkInfo().isConnected();
return isNetworkConnected;
}
}

@ -1,78 +0,0 @@
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;
}
}

@ -1,142 +0,0 @@
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;
}
}

@ -1,450 +0,0 @@
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.iflytek.cloud.ErrorCode;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
public class yuyin extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "MainActivity";
private SpeechRecognizer mIat;// 语音听写对象
private RecognizerDialog mIatDialog;// 语音听写UI
// 用HashMap存储听写结果
private HashMap<String, String> mIatResults = new LinkedHashMap<String, String>();
private SharedPreferences mSharedPreferences;//缓存
private String mEngineType = SpeechConstant.TYPE_CLOUD;// 引擎类型
private String language = "zh_cn";//识别语言
private TextView tvResult;//识别结果
private Button btnStart;//开始识别
private String resultType = "json";//结果内容数据格式
private Button go;
private TextView tvResult1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_yuyin);
tvResult = findViewById(R.id.tv_result);
btnStart = findViewById(R.id.btn_start);
go=findViewById(R.id.go);
btnStart.setOnClickListener(this);
tvResult1=findViewById(R.id.tv_result1);
initPermission();//权限请求
// 使用SpeechRecognizer对象可根据回调消息自定义界面
mIat = SpeechRecognizer.createRecognizer(yuyin.this, mInitListener);
// 使用UI听写功能请根据sdk文件目录下的notice.txt,放置布局文件和图片资源
mIatDialog = new RecognizerDialog(yuyin.this, mInitListener);
mSharedPreferences = getSharedPreferences("ASR",
Activity.MODE_PRIVATE);
}
@Override
public void onClick(View v) {
if( null == mIat ){
// 创建单例失败,与 21001 错误为同样原因,参考 http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=9688
showMsg( "创建对象失败,请确认 libmsc.so 放置正确,且有调用 createUtility 进行初始化" );
return;
}
mIatResults.clear();//清除数据
setParam(); // 设置参数
mIatDialog.setListener(mRecognizerDialogListener);//设置监听
mIatDialog.show();// 显示对话框
}
/**
*
*/
private InitListener mInitListener = new InitListener() {
@Override
public void onInit(int code) {
Log.d(TAG, "SpeechRecognizer init() code = " + code);
if (code != ErrorCode.SUCCESS) {
showMsg("初始化失败,错误码:" + code + ",请点击网址https://www.xfyun.cn/document/error-code查询解决方案");
}
}
};
/**
* UI
*/
private RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() {
public void onResult(RecognizerResult results, boolean isLast) {
printResult(results);//结果数据解析
printButton(results);
}
/**
* .
*/
public void onError(SpeechError error) {
showMsg(error.getPlainDescription(true));
}
};
/**
*
*
* @param results
*/
private void printResult(RecognizerResult results) {
String text = JsonParser.parseIatResult(results.getResultString());
String sn = null;
// 读取json结果中的sn字段
try {
JSONObject resultJson = new JSONObject(results.getResultString());
sn = resultJson.optString("sn");
} catch (JSONException e) {
e.printStackTrace();
}
mIatResults.put(sn, text);
StringBuffer resultBuffer = new StringBuffer();
for (String key : mIatResults.keySet()) {
resultBuffer.append(mIatResults.get(key));
}
tvResult.setText(resultBuffer.toString());//听写结果显示
}
private void printButton(RecognizerResult results) {
String text = JsonParser.parseIatResult(results.getResultString());
String sn = null;
// 读取json结果中的sn字段
try {
JSONObject resultJson = new JSONObject(results.getResultString());
sn = resultJson.optString("sn");
} catch (JSONException e) {
e.printStackTrace();
}
mIatResults.put(sn, text);
StringBuffer resultBuffer = new StringBuffer();
for (String key : mIatResults.keySet()) {
resultBuffer.append(mIatResults.get(key));
}
if(resultBuffer.toString().equals("健康。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
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);
}
});
}
else if(resultBuffer.toString().equals("行程。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri10 = Uri.parse("alipayqr://platformapi/startapp?saId=2021002170600786");
Intent intent10 = new Intent(Intent.ACTION_VIEW, uri10);
startActivity(intent10);
}
});
}
else if(resultBuffer.toString().equals("核酸检测。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri10 = Uri.parse("alipayqr://platformapi/startapp?saId=2021001123608001");
Intent intent10 = new Intent(Intent.ACTION_VIEW, uri10);
startActivity(intent10);
}
});
}
else if(resultBuffer.toString().equals("扫码付款。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri10 = Uri.parse("alipayqr://platformapi/startapp?saId=10000007");
Intent intent10 = new Intent(Intent.ACTION_VIEW, uri10);
startActivity(intent10);
}
});
}
else if(resultBuffer.toString().equals("付款码。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri10 = Uri.parse("alipayqr://platformapi/startapp?saId=20000056");
Intent intent10 = new Intent(Intent.ACTION_VIEW, uri10);
startActivity(intent10);
}
});
}
else if(resultBuffer.toString().equals("收款码。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri10 = Uri.parse("alipayqr://platformapi/startapp?saId=20000123");
Intent intent10 = new Intent(Intent.ACTION_VIEW, uri10);
startActivity(intent10);
}
});
}
else if(resultBuffer.toString().equals("设置常用联系人。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.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);
}
});
}
else if(resultBuffer.toString().equals("呼叫。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.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);
}
});
}
else if(resultBuffer.toString().equals("一键通。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1=new Intent(yuyin.this,yijiantong.class);
startActivity(intent1);;
}
});
}
else if(resultBuffer.toString().equals("找寻。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1=new Intent(yuyin.this,zhaoxun.class);
startActivity(intent1);;
}
});
}
else if(resultBuffer.toString().equals("健康。")){
Button button1 = findViewById(R.id.go);
tvResult1.setText(resultBuffer.toString());
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1=new Intent(yuyin.this,jiankang.class);
startActivity(intent1);;
}
});
}
else{
}
}
/**
*
*
* @return
*/
public void setParam() {
// 清空参数
mIat.setParameter(SpeechConstant.PARAMS, null);
// 设置听写引擎
mIat.setParameter(SpeechConstant.ENGINE_TYPE, mEngineType);
// 设置返回结果格式
mIat.setParameter(SpeechConstant.RESULT_TYPE, resultType);
if (language.equals("zh_cn")) {
String lag = mSharedPreferences.getString("iat_language_preference",
"mandarin");
Log.e(TAG, "language:" + language);// 设置语言
mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
// 设置语言区域
mIat.setParameter(SpeechConstant.ACCENT, lag);
} else {
mIat.setParameter(SpeechConstant.LANGUAGE, language);
}
Log.e(TAG, "last language:" + mIat.getParameter(SpeechConstant.LANGUAGE));
//此处用于设置dialog中不显示错误码信息
//mIat.setParameter("view_tips_plain","false");
// 设置语音前端点:静音超时时间,即用户多长时间不说话则当做超时处理
mIat.setParameter(SpeechConstant.VAD_BOS, mSharedPreferences.getString("iat_vadbos_preference", "4000"));
// 设置语音后端点:后端点静音检测时间,即用户停止说话多长时间内即认为不再输入, 自动停止录音
mIat.setParameter(SpeechConstant.VAD_EOS, mSharedPreferences.getString("iat_vadeos_preference", "1000"));
// 设置标点符号,设置为"0"返回结果无标点,设置为"1"返回结果有标点
mIat.setParameter(SpeechConstant.ASR_PTT, mSharedPreferences.getString("iat_punc_preference", "1"));
// 设置音频保存路径保存音频格式支持pcm、wav设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限
mIat.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");
mIat.setParameter(SpeechConstant.ASR_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/msc/iat.wav");
}
/**
*
* @param msg
*/
private void showMsg(String msg) {
Toast.makeText(yuyin.this, msg, Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (null != mIat) {
// 退出时释放连接
mIat.cancel();
mIat.destroy();
}
}
/**
* android 6.0
*/
private void initPermission() {
String permissions[] = {Manifest.permission.RECORD_AUDIO,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.INTERNET,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
ArrayList<String> toApplyList = new ArrayList<String>();
for (String perm : permissions) {
if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {
toApplyList.add(perm);
}
}
String tmpList[] = new String[toApplyList.size()];
if (!toApplyList.isEmpty()) {
ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123);
}
}
/**
*
*
* @param requestCode
* @param permissions
* @param grantResults
*/
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
// 此处为android 6.0以上动态授权的回调,用户自行实现。
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}

@ -1,42 +0,0 @@
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);
}
});
}
}

@ -1,30 +0,0 @@
<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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save