Commit 1bb09f67 authored by jianglx's avatar jianglx

添加来消息语音提示,添加来消息状态栏提示

parent b4c6eb7d
...@@ -59,6 +59,9 @@ import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean; ...@@ -59,6 +59,9 @@ import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean;
import com.rv.im.ImService; import com.rv.im.ImService;
import com.rv.im.ImSetting; import com.rv.im.ImSetting;
import com.rv.im.call.AudioOrVideoController; import com.rv.im.call.AudioOrVideoController;
import com.rv.im.db.table.ChatMessage;
import com.rv.im.xmpp.ListenerManager;
import com.rv.im.xmpp.listener.ChatMessageListener;
import com.rv.rvmine.MineFragment; import com.rv.rvmine.MineFragment;
import com.rv.share.WebViewActivity; import com.rv.share.WebViewActivity;
import com.rv.share.view.PromotionDialog; import com.rv.share.view.PromotionDialog;
...@@ -90,7 +93,7 @@ import cn.jpush.android.api.BasicPushNotificationBuilder; ...@@ -90,7 +93,7 @@ import cn.jpush.android.api.BasicPushNotificationBuilder;
import cn.jpush.android.api.JPushInterface; import cn.jpush.android.api.JPushInterface;
public class MainActivity extends BaseActivity<CommonPresenter> implements DownListenerManager.DownListener { public class MainActivity extends BaseActivity<CommonPresenter> implements DownListenerManager.DownListener, ChatMessageListener {
private boolean hasGetVersionInfo = false; // 判断是否已经获取过版本信息 private boolean hasGetVersionInfo = false; // 判断是否已经获取过版本信息
...@@ -158,6 +161,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL ...@@ -158,6 +161,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
AudioOrVideoController.init(getApplicationContext(), logoutListener); AudioOrVideoController.init(getApplicationContext(), logoutListener);
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
DownListenerManager.getInstance().addDownListener(this); DownListenerManager.getInstance().addDownListener(this);
ListenerManager.getInstance().addChatMessageListener(this);
} }
...@@ -550,6 +554,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL ...@@ -550,6 +554,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
DownListenerManager.getInstance().removeDownListener(this); DownListenerManager.getInstance().removeDownListener(this);
ListenerManager.getInstance().removeChatMessageListener(this);
destory(); destory();
// unRegisterUpdateReceiver(); // unRegisterUpdateReceiver();
if (netReceiver != null) { if (netReceiver != null) {
...@@ -702,4 +707,15 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL ...@@ -702,4 +707,15 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i); startActivity(i);
} }
@Override
public void onMessageSendStateChange(int messageState, String msgId) {
}
@Override
public void onNewMessage(String fromUserId, ChatMessage message, boolean isGroupMsg) {
((HomeFragment) mAdapter.getItem(0)).newsComing();
((TourismFragment) mAdapter.getItem(1)).newsComing();
}
} }
...@@ -241,6 +241,8 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -241,6 +241,8 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
private int countPage; private int countPage;
private int mPage; private int mPage;
private boolean hasNewMessage ;
public static HomeFragment getInstance(int type) { public static HomeFragment getInstance(int type) {
Bundle bundl = new Bundle(); Bundle bundl = new Bundle();
bundl.putInt("type", type); bundl.putInt("type", type);
...@@ -874,6 +876,12 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -874,6 +876,12 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
scrollview.fullScroll(View.FOCUS_UP); scrollview.fullScroll(View.FOCUS_UP);
} else if (id == R.id.iv_home_travel_server_image) { } else if (id == R.id.iv_home_travel_server_image) {
if (isLogin()) { if (isLogin()) {
hasNewMessage = false ;
if (llItemTop.getVisibility() != View.VISIBLE) {
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
} else {
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
}
ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity"); ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity");
Intent intent = new Intent(); Intent intent = new Intent();
intent.putExtra("login_user_id", Cookie.getStringValue(getContext(), SPConstance.USER_JSON_IMUSERID)); intent.putExtra("login_user_id", Cookie.getStringValue(getContext(), SPConstance.USER_JSON_IMUSERID));
...@@ -1247,7 +1255,11 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -1247,7 +1255,11 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
//只是layout背景透明(仿知乎滑动效果) //只是layout背景透明(仿知乎滑动效果)
llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_translucent)); llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_translucent));
travelCityText.setTextColor(getResources().getColor(R.color.colorWrite)); travelCityText.setTextColor(getResources().getColor(R.color.colorWrite));
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white); if(hasNewMessage){
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news);
}else {
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
}
ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow2); ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow2);
ivSearchInputHint.setImageResource(R.drawable.rv_common_icon_search2); ivSearchInputHint.setImageResource(R.drawable.rv_common_icon_search2);
searchInput.setHintTextColor(getResources().getColor(R.color.colorWrite)); searchInput.setHintTextColor(getResources().getColor(R.color.colorWrite));
...@@ -1259,7 +1271,11 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -1259,7 +1271,11 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
} else { } else {
llItemTop.setVisibility(View.VISIBLE); llItemTop.setVisibility(View.VISIBLE);
llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_search)); llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_search));
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange); if(hasNewMessage){
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange_news);
}else{
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
}
travelCityText.setTextColor(getResources().getColor(R.color.colorMain)); travelCityText.setTextColor(getResources().getColor(R.color.colorMain));
ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow); ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow);
ivSearchInputHint.setImageResource(R.drawable.rv_common_icon_search); ivSearchInputHint.setImageResource(R.drawable.rv_common_icon_search);
...@@ -1381,6 +1397,18 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -1381,6 +1397,18 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
}); });
} }
/******
* 新消息
*/
public void newsComing() {
hasNewMessage = true ;
if (llItemTop.getVisibility() != View.VISIBLE) {
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news);
} else {
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange_news);
}
}
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
......
...@@ -5,7 +5,6 @@ import android.content.ComponentName; ...@@ -5,7 +5,6 @@ import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Rect; import android.graphics.Rect;
import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
...@@ -28,10 +27,8 @@ import com.baidu.mapapi.search.geocode.GeoCodeResult; ...@@ -28,10 +27,8 @@ import com.baidu.mapapi.search.geocode.GeoCodeResult;
import com.baidu.mapapi.search.geocode.GeoCoder; import com.baidu.mapapi.search.geocode.GeoCoder;
import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener; import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult; import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
import com.base.utils.tools.android.IntentUtil;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.ruiwenliu.wrapper.SPConstance; import com.ruiwenliu.wrapper.SPConstance;
import com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl;
import com.frame.base.url.Constance; import com.frame.base.url.Constance;
import com.ruiwenliu.wrapper.base.BaseBean; import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseFragment; import com.ruiwenliu.wrapper.base.BaseFragment;
...@@ -49,7 +46,6 @@ import com.rv.tourism.api.TourismApi; ...@@ -49,7 +46,6 @@ import com.rv.tourism.api.TourismApi;
import com.rv.tourism.bean.BeanPopularBrigade; import com.rv.tourism.bean.BeanPopularBrigade;
import com.rv.tourism.bean.BeanPopularBrigadeAll; import com.rv.tourism.bean.BeanPopularBrigadeAll;
import com.rv.tourism.bean.BeanTourAround; import com.rv.tourism.bean.BeanTourAround;
import com.rv.tourism.bean.BeanTourDetail;
import com.rv.tourism.bean.BeanTourismBanner; import com.rv.tourism.bean.BeanTourismBanner;
import com.rv.tourism.other.PopularTourListActivity; import com.rv.tourism.other.PopularTourListActivity;
...@@ -67,7 +63,7 @@ import java.util.List; ...@@ -67,7 +63,7 @@ import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import io.reactivex.functions.Consumer; import io.reactivex.functions.Consumer;
import pub.devrel.easypermissions.AppSettingsDialog;
/** /**
* 旅游 * 旅游
...@@ -93,6 +89,8 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S ...@@ -93,6 +89,8 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
LinearLayout llLayoutPopularMore; LinearLayout llLayoutPopularMore;
@BindView(R2.id.refresh) @BindView(R2.id.refresh)
SimpleRefreshLayout mSimpleRefreshLayout; SimpleRefreshLayout mSimpleRefreshLayout;
@BindView(R2.id.travel_server_image)
ImageView ImgTravelServer;
private ArrayList<String> images = new ArrayList<>(); //图片(默认采用网络地址) private ArrayList<String> images = new ArrayList<>(); //图片(默认采用网络地址)
...@@ -112,6 +110,8 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S ...@@ -112,6 +110,8 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
private LocationManager locationManager; private LocationManager locationManager;
private GeoCoder geoCoder; private GeoCoder geoCoder;
private boolean hasNewMessage;
public static TourismFragment getInstance(int type) { public static TourismFragment getInstance(int type) {
Bundle bundl = new Bundle(); Bundle bundl = new Bundle();
...@@ -234,6 +234,9 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S ...@@ -234,6 +234,9 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
.navigation(); .navigation();
} else if (id == R.id.travel_server_image) { } else if (id == R.id.travel_server_image) {
if (isLogin()) { if (isLogin()) {
hasNewMessage = false;
ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray);
ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity"); ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity");
Intent intent = new Intent(); Intent intent = new Intent();
intent.putExtra("login_user_id", Cookie.getStringValue(getContext(), SPConstance.USER_JSON_IMUSERID)); intent.putExtra("login_user_id", Cookie.getStringValue(getContext(), SPConstance.USER_JSON_IMUSERID));
...@@ -436,6 +439,11 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S ...@@ -436,6 +439,11 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
travelBanner.updateBannerStyle(BannerConfig.CIRCLE_INDICATOR); travelBanner.updateBannerStyle(BannerConfig.CIRCLE_INDICATOR);
} }
public void newsComing() {
hasNewMessage = true;
ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray_news);
}
@Override @Override
public void onDestroy() { public void onDestroy() {
......
package com.rv.im.util;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.NotificationCompat;
import com.rv.im.CustomerListActivity;
import com.rv.im.R;
public class NotificationMananger {
private NotificationMananger() {
}
public static void showNewsNotification(Context context, String fromId) {
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder;
//判断是否是8.0Android.O
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel chan1 = new NotificationChannel("1", "newChannel", NotificationManager.IMPORTANCE_HIGH);
manager.createNotificationChannel(chan1);
builder = new NotificationCompat.Builder(context, "1");
} else {
builder = new NotificationCompat.Builder(context);
}
//
// Intent intent = new Intent();
// intent.setComponent(new ComponentName(context, "com.xxfc.rv."));
// intent.putExtra("to","chat") ;
// intent.putExtra("fromId",fromId) ;
//
Intent intent = new Intent(context, CustomerListActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
Notification notification = builder.setTicker("您有新的消息")
.setSmallIcon(R.mipmap.logo)
.setWhen(System.currentTimeMillis())
.setContentIntent(pendingIntent)
.setContentTitle("滴房车")
.setContentText("您有新的消息")
.setAutoCancel(true)
.setPriority(Notification.PRIORITY_DEFAULT)
.build();
manager.notify(0, notification);
}
}
package com.rv.im.xmpp; package com.rv.im.xmpp;
import android.media.MediaPlayer;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import com.rv.im.ImSetting; import com.rv.im.ImSetting;
import com.rv.im.R;
import com.rv.im.db.service.ChatMessageServiceImp; import com.rv.im.db.service.ChatMessageServiceImp;
import com.rv.im.db.service.IChatMessageService; import com.rv.im.db.service.IChatMessageService;
import com.rv.im.db.table.ChatMessage; import com.rv.im.db.table.ChatMessage;
import com.rv.im.util.NotificationMananger;
import com.rv.im.xmpp.listener.AuthStateListener; import com.rv.im.xmpp.listener.AuthStateListener;
import com.rv.im.xmpp.listener.ChatMessageListener; import com.rv.im.xmpp.listener.ChatMessageListener;
...@@ -18,6 +21,7 @@ public class ListenerManager { ...@@ -18,6 +21,7 @@ public class ListenerManager {
/* 回调监听 */ /* 回调监听 */
private List<AuthStateListener> mAuthStateListeners = new ArrayList<>(); private List<AuthStateListener> mAuthStateListeners = new ArrayList<>();
private List<ChatMessageListener> mChatMessageListeners = new ArrayList<>(); private List<ChatMessageListener> mChatMessageListeners = new ArrayList<>();
private Handler mHandler = new Handler(Looper.getMainLooper()); private Handler mHandler = new Handler(Looper.getMainLooper());
private ListenerManager() { private ListenerManager() {
...@@ -97,7 +101,8 @@ public class ListenerManager { ...@@ -97,7 +101,8 @@ public class ListenerManager {
* 新消息来临 * 新消息来临
*/ */
public void notifyNewMesssage(final ChatMessage message) { public void notifyNewMesssage(final ChatMessage message) {
NotificationMananger.showNewsNotification(ImSetting.getContext(), message.getFromId());
bell();
mHandler.post(() -> { mHandler.post(() -> {
if (message != null) { if (message != null) {
ChatMessageServiceImp.getInstance(ImSetting.getContext()).addMessage(message); // 数据库添加消息 ChatMessageServiceImp.getInstance(ImSetting.getContext()).addMessage(message); // 数据库添加消息
...@@ -107,4 +112,24 @@ public class ListenerManager { ...@@ -107,4 +112,24 @@ public class ListenerManager {
} }
}); });
} }
private void bell() {
MediaPlayer mediaPlayer = MediaPlayer.create(ImSetting.getContext(), R.raw.msg);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(arg0 -> {
mediaPlayer.start();
stopPlay(mediaPlayer);
});
}
private void stopPlay(MediaPlayer mediaPlayer) {
if (mediaPlayer != null) {
try {
mediaPlayer.stop();
} catch (Exception e) {
e.printStackTrace();
}
mediaPlayer.release();
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment