diff --git a/app/src/main/assets/hot_region.json b/app/src/main/assets/hot_region.json index 1f6bad501..3f6dc6d56 100644 --- a/app/src/main/assets/hot_region.json +++ b/app/src/main/assets/hot_region.json @@ -1 +1,32 @@ -[{"name":"Taiwan","abbr":"TW","mcc":"466","code":"886"},{"name":"Hong Kong","abbr":"HK","mcc":"454","code":"852"},{"name":"Singapore","abbr":"SG","mcc":"525","code":"65"},{"name":"Malaysia","abbr":"MY","mcc":"502","code":"60"},{"name":"China","abbr":"CN","mcc":"460","code":"86"}] \ No newline at end of file +[ + { + "name": "Taiwan", + "abbr": "TW", + "mcc": "466", + "code": "886" + }, + { + "name": "Hong Kong", + "abbr": "HK", + "mcc": "454", + "code": "852" + }, + { + "name": "Singapore", + "abbr": "SG", + "mcc": "525", + "code": "65" + }, + { + "name": "Malaysia", + "abbr": "MY", + "mcc": "502", + "code": "60" + }, + { + "name": "China", + "abbr": "CN", + "mcc": "460", + "code": "86" + } +] \ No newline at end of file diff --git a/app/src/main/assets/region.json b/app/src/main/assets/region.json index 2ec0e02a3..55ab182d9 100644 --- a/app/src/main/assets/region.json +++ b/app/src/main/assets/region.json @@ -1 +1,986 @@ -[{"name":"Afghanistan","abbr":"AF","mcc":"412","code":"93"},{"name":"Albania","abbr":"AL","mcc":"276","code":"355"},{"name":"Algeria","abbr":"DZ","mcc":"603","code":"213"},{"name":"American Samoa","abbr":"AS","mcc":"544","code":"1684"},{"name":"Andorra","abbr":"AD","mcc":"213","code":"376"},{"name":"Angola","abbr":"AO","mcc":"631","code":"244"},{"name":"Anguilla","abbr":"AI","mcc":"365","code":"1264"},{"name":"Antigua and Barbuda","abbr":"AG","mcc":"344","code":"1268"},{"name":"Argentina","abbr":"AR","mcc":"722","code":"54"},{"name":"Aruba","abbr":"AW","mcc":"363","code":"297"},{"name":"Australia","abbr":"AU","mcc":"505","code":"61"},{"name":"Austria","abbr":"AT","mcc":"232","code":"43"},{"name":"Azerbaijan","abbr":"AZ","mcc":"400","code":"994"},{"name":"Bahamas","abbr":"BS","mcc":"364","code":"1242"},{"name":"Bahrain","abbr":"BH","mcc":"426","code":"973"},{"name":"Bangladesh","abbr":"BD","mcc":"470","code":"880"},{"name":"Barbados","abbr":"BB","mcc":"342","code":"1246"},{"name":"Belarus","abbr":"BY","mcc":"257","code":"375"},{"name":"Belgium","abbr":"BE","mcc":"206","code":"32"},{"name":"Belize","abbr":"BZ","mcc":"702","code":"501"},{"name":"Benin","abbr":"BJ","mcc":"616","code":"229"},{"name":"Bermuda","abbr":"BM","mcc":"350","code":"1441"},{"name":"Bolivia, Plurinational State of","abbr":"BO","mcc":"736","code":"591"},{"name":"Botswana","abbr":"BW","mcc":"652","code":"267"},{"name":"Brazil","abbr":"BR","mcc":"724","code":"55"},{"name":"Brunei Darussalam","abbr":"BN","mcc":"528","code":"673"},{"name":"Bulgaria","abbr":"BG","mcc":"284","code":"359"},{"name":"Burkina Faso","abbr":"BF","mcc":"613","code":"226"},{"name":"Burundi","abbr":"BI","mcc":"642","code":"257"},{"name":"Cambodia","abbr":"KH","mcc":"456","code":"855"},{"name":"Cameroon","abbr":"CM","mcc":"624","code":"237"},{"name":"Canada","abbr":"CA","mcc":"302","code":"1"},{"name":"Cape Verde","abbr":"CV","mcc":"625","code":"238"},{"name":"Cayman Islands","abbr":"KY","mcc":"346","code":"1345"},{"name":"Central African Republic","abbr":"CF","mcc":"623","code":"236"},{"name":"Chad","abbr":"TD","mcc":"622","code":"235"},{"name":"Chile","abbr":"CL","mcc":"730","code":"56"},{"name":"China","abbr":"CN","mcc":"460","code":"86"},{"name":"Colombia","abbr":"CO","mcc":"732","code":"57"},{"name":"Congo","abbr":"CG","mcc":"629","code":"242"},{"name":"Cook Islands","abbr":"CK","mcc":"548","code":"682"},{"name":"Costa Rica","abbr":"CR","mcc":"712","code":"506"},{"name":"Croatia","abbr":"HR","mcc":"219","code":"385"},{"name":"Cuba","abbr":"CU","mcc":"368","code":"53"},{"name":"Curaçao","abbr":"CW","mcc":"362","code":"599"},{"name":"Cyprus","abbr":"CY","mcc":"280","code":"357"},{"name":"Czech Republic","abbr":"CZ","mcc":"230","code":"420"},{"name":"Denmark","abbr":"DK","mcc":"238","code":"45"},{"name":"Djibouti","abbr":"DJ","mcc":"638","code":"253"},{"name":"Dominica","abbr":"DM","mcc":"366","code":"1767"},{"name":"Dominican Republic","abbr":"DO","mcc":"370","code":"1809"},{"name":"Ecuador","abbr":"EC","mcc":"740","code":"593"},{"name":"Egypt","abbr":"EG","mcc":"602","code":"20"},{"name":"El Salvador","abbr":"SV","mcc":"706","code":"503"},{"name":"Equatorial Guinea","abbr":"GQ","mcc":"627","code":"240"},{"name":"Estonia","abbr":"EE","mcc":"248","code":"372"},{"name":"Ethiopia","abbr":"ET","mcc":"636","code":"251"},{"name":"Fiji","abbr":"FJ","mcc":"542","code":"679"},{"name":"Finland","abbr":"FI","mcc":"244","code":"358"},{"name":"France","abbr":"FR","mcc":"208","code":"33"},{"name":"French Guiana","abbr":"GF","mcc":"742","code":"594"},{"name":"French Polynesia","abbr":"PF","mcc":"547","code":"689"},{"name":"Gabon","abbr":"GA","mcc":"628","code":"241"},{"name":"Gambia","abbr":"GM","mcc":"607","code":"220"},{"name":"Germany","abbr":"DE","mcc":"262","code":"49"},{"name":"Ghana","abbr":"GH","mcc":"620","code":"233"},{"name":"Gibraltar","abbr":"GI","mcc":"266","code":"350"},{"name":"Greece","abbr":"GR","mcc":"202","code":"30"},{"name":"Greenland","abbr":"GL","mcc":"290","code":"299"},{"name":"Grenada","abbr":"GD","mcc":"352","code":"1473"},{"name":"Guam","abbr":"GU","mcc":"535","code":"1671"},{"name":"Guatemala","abbr":"GT","mcc":"704","code":"502"},{"name":"Guinea","abbr":"GN","mcc":"611","code":"224"},{"name":"Guyana","abbr":"GY","mcc":"738","code":"592"},{"name":"Haiti","abbr":"HT","mcc":"372","code":"509"},{"name":"Honduras","abbr":"HN","mcc":"708","code":"504"},{"name":"Hong Kong","abbr":"HK","mcc":"454","code":"852"},{"name":"Iceland","abbr":"IS","mcc":"274","code":"354"},{"name":"India","abbr":"IN","mcc":"404","code":"91"},{"name":"Indonesia","abbr":"ID","mcc":"510","code":"62"},{"name":"Iran, Islamic Republic of","abbr":"IR","mcc":"432","code":"98"},{"name":"Iraq","abbr":"IQ","mcc":"418","code":"964"},{"name":"Ireland","abbr":"IE","mcc":"272","code":"353"},{"name":"Israel","abbr":"IL","mcc":"425","code":"972"},{"name":"Italy","abbr":"IT","mcc":"222","code":"39"},{"name":"Jamaica","abbr":"JM","mcc":"338","code":"1876"},{"name":"Japan","abbr":"JP","mcc":"440","code":"81"},{"name":"Jordan","abbr":"JO","mcc":"416","code":"962"},{"name":"Kazakhstan","abbr":"KZ","mcc":"401","code":"327"},{"name":"Kenya","abbr":"KE","mcc":"639","code":"254"},{"name":"Kiribati","abbr":"KI","mcc":"545","code":"686"},{"name":"Korea, Republic of","abbr":"KR","mcc":"450","code":"82"},{"name":"Kuwait","abbr":"KW","mcc":"419","code":"965"},{"name":"Lao People's Democratic Republic","abbr":"LA","mcc":"457","code":"856"},{"name":"Latvia","abbr":"LV","mcc":"247","code":"371"},{"name":"Lebanon","abbr":"LB","mcc":"415","code":"961"},{"name":"Lesotho","abbr":"LS","mcc":"651","code":"266"},{"name":"Liberia","abbr":"LR","mcc":"618","code":"231"},{"name":"Libya","abbr":"LY","mcc":"606","code":"218"},{"name":"Lithuania","abbr":"LT","mcc":"246","code":"370"},{"name":"Luxembourg","abbr":"LU","mcc":"270","code":"352"},{"name":"Macao","abbr":"MO","mcc":"455","code":"853"},{"name":"Madagascar","abbr":"MG","mcc":"646","code":"261"},{"name":"Malawi","abbr":"MW","mcc":"650","code":"265"},{"name":"Malaysia","abbr":"MY","mcc":"502","code":"60"},{"name":"Maldives","abbr":"MV","mcc":"472","code":"960"},{"name":"Mali","abbr":"ML","mcc":"610","code":"223"},{"name":"Malta","abbr":"MT","mcc":"278","code":"356"},{"name":"Mauritius","abbr":"MU","mcc":"617","code":"230"},{"name":"Mexico","abbr":"MX","mcc":"334","code":"52"},{"name":"Moldova, Republic of","abbr":"MD","mcc":"259","code":"373"},{"name":"Monaco","abbr":"MC","mcc":"212","code":"377"},{"name":"Mongolia","abbr":"MN","mcc":"428","code":"976"},{"name":"Morocco","abbr":"MA","mcc":"604","code":"212"},{"name":"Mozambique","abbr":"MZ","mcc":"643","code":"258"},{"name":"Myanmar","abbr":"MM","mcc":"414","code":"95"},{"name":"Namibia","abbr":"NA","mcc":"649","code":"264"},{"name":"Nepal","abbr":"NP","mcc":"429","code":"977"},{"name":"Netherlands","abbr":"NL","mcc":"204","code":"31"},{"name":"New Zealand","abbr":"NZ","mcc":"530","code":"64"},{"name":"Nicaragua","abbr":"NI","mcc":"710","code":"505"},{"name":"Niger","abbr":"NE","mcc":"614","code":"227"},{"name":"Nigeria","abbr":"NG","mcc":"621","code":"234"},{"name":"Norway","abbr":"NO","mcc":"242","code":"47"},{"name":"Oman","abbr":"OM","mcc":"422","code":"968"},{"name":"Pakistan","abbr":"PK","mcc":"410","code":"92"},{"name":"Panama","abbr":"PA","mcc":"714","code":"507"},{"name":"Papua New Guinea","abbr":"PG","mcc":"537","code":"675"},{"name":"Paraguay","abbr":"PY","mcc":"744","code":"595"},{"name":"Peru","abbr":"PE","mcc":"716","code":"51"},{"name":"Philippines","abbr":"PH","mcc":"515","code":"63"},{"name":"Poland","abbr":"PL","mcc":"260","code":"48"},{"name":"Portugal","abbr":"PT","mcc":"268","code":"351"},{"name":"Puerto Rico","abbr":"PR","mcc":"330","code":"1787"},{"name":"Qatar","abbr":"QA","mcc":"427","code":"974"},{"name":"Romania","abbr":"RO","mcc":"226","code":"40"},{"name":"Saint Lucia","abbr":"LC","mcc":"358","code":"1758"},{"name":"San Marino","abbr":"SM","mcc":"292","code":"378"},{"name":"Sao Tome and Principe","abbr":"ST","mcc":"626","code":"239"},{"name":"Saudi Arabia","abbr":"SA","mcc":"420","code":"966"},{"name":"Senegal","abbr":"SN","mcc":"608","code":"221"},{"name":"Seychelles","abbr":"SC","mcc":"633","code":"248"},{"name":"Sierra Leone","abbr":"SL","mcc":"619","code":"232"},{"name":"Singapore","abbr":"SG","mcc":"525","code":"65"},{"name":"Slovakia","abbr":"SK","mcc":"231","code":"421"},{"name":"Slovenia","abbr":"SI","mcc":"293","code":"386"},{"name":"Solomon Islands","abbr":"SB","mcc":"540","code":"677"},{"name":"Somalia","abbr":"SO","mcc":"637","code":"252"},{"name":"South Africa","abbr":"ZA","mcc":"655","code":"27"},{"name":"Spain","abbr":"ES","mcc":"214","code":"34"},{"name":"Sri Lanka","abbr":"LK","mcc":"413","code":"94"},{"name":"Sudan","abbr":"SD","mcc":"634","code":"249"},{"name":"Suriname","abbr":"SR","mcc":"746","code":"597"},{"name":"Swaziland","abbr":"SZ","mcc":"653","code":"268"},{"name":"Sweden","abbr":"SE","mcc":"240","code":"46"},{"name":"Switzerland","abbr":"CH","mcc":"228","code":"41"},{"name":"Syrian Arab Republic","abbr":"SY","mcc":"417","code":"963"},{"name":"Taiwan","abbr":"TW","mcc":"466","code":"886"},{"name":"Vanuatu","abbr":"VU","mcc":"541","code":"678"},{"name":"Virgin Islands, British","abbr":"VG","mcc":"348","code":"1284"},{"name":"United Kingdom","abbr":"GB","mcc":"235","code":"44"},{"name":"United States","abbr":"US","mcc":"310","code":"1"}] \ No newline at end of file +[ + { + "name": "Afghanistan", + "abbr": "AF", + "mcc": "412", + "code": "93" + }, + { + "name": "Albania", + "abbr": "AL", + "mcc": "276", + "code": "355" + }, + { + "name": "Algeria", + "abbr": "DZ", + "mcc": "603", + "code": "213" + }, + { + "name": "American Samoa", + "abbr": "AS", + "mcc": "544", + "code": "1684" + }, + { + "name": "Andorra", + "abbr": "AD", + "mcc": "213", + "code": "376" + }, + { + "name": "Angola", + "abbr": "AO", + "mcc": "631", + "code": "244" + }, + { + "name": "Anguilla", + "abbr": "AI", + "mcc": "365", + "code": "1264" + }, + { + "name": "Antigua and Barbuda", + "abbr": "AG", + "mcc": "344", + "code": "1268" + }, + { + "name": "Argentina", + "abbr": "AR", + "mcc": "722", + "code": "54" + }, + { + "name": "Aruba", + "abbr": "AW", + "mcc": "363", + "code": "297" + }, + { + "name": "Australia", + "abbr": "AU", + "mcc": "505", + "code": "61" + }, + { + "name": "Austria", + "abbr": "AT", + "mcc": "232", + "code": "43" + }, + { + "name": "Azerbaijan", + "abbr": "AZ", + "mcc": "400", + "code": "994" + }, + { + "name": "Bahamas", + "abbr": "BS", + "mcc": "364", + "code": "1242" + }, + { + "name": "Bahrain", + "abbr": "BH", + "mcc": "426", + "code": "973" + }, + { + "name": "Bangladesh", + "abbr": "BD", + "mcc": "470", + "code": "880" + }, + { + "name": "Barbados", + "abbr": "BB", + "mcc": "342", + "code": "1246" + }, + { + "name": "Belarus", + "abbr": "BY", + "mcc": "257", + "code": "375" + }, + { + "name": "Belgium", + "abbr": "BE", + "mcc": "206", + "code": "32" + }, + { + "name": "Belize", + "abbr": "BZ", + "mcc": "702", + "code": "501" + }, + { + "name": "Benin", + "abbr": "BJ", + "mcc": "616", + "code": "229" + }, + { + "name": "Bermuda", + "abbr": "BM", + "mcc": "350", + "code": "1441" + }, + { + "name": "Bolivia, Plurinational State of", + "abbr": "BO", + "mcc": "736", + "code": "591" + }, + { + "name": "Botswana", + "abbr": "BW", + "mcc": "652", + "code": "267" + }, + { + "name": "Brazil", + "abbr": "BR", + "mcc": "724", + "code": "55" + }, + { + "name": "Brunei Darussalam", + "abbr": "BN", + "mcc": "528", + "code": "673" + }, + { + "name": "Bulgaria", + "abbr": "BG", + "mcc": "284", + "code": "359" + }, + { + "name": "Burkina Faso", + "abbr": "BF", + "mcc": "613", + "code": "226" + }, + { + "name": "Burundi", + "abbr": "BI", + "mcc": "642", + "code": "257" + }, + { + "name": "Cambodia", + "abbr": "KH", + "mcc": "456", + "code": "855" + }, + { + "name": "Cameroon", + "abbr": "CM", + "mcc": "624", + "code": "237" + }, + { + "name": "Canada", + "abbr": "CA", + "mcc": "302", + "code": "1" + }, + { + "name": "Cape Verde", + "abbr": "CV", + "mcc": "625", + "code": "238" + }, + { + "name": "Cayman Islands", + "abbr": "KY", + "mcc": "346", + "code": "1345" + }, + { + "name": "Central African Republic", + "abbr": "CF", + "mcc": "623", + "code": "236" + }, + { + "name": "Chad", + "abbr": "TD", + "mcc": "622", + "code": "235" + }, + { + "name": "Chile", + "abbr": "CL", + "mcc": "730", + "code": "56" + }, + { + "name": "China", + "abbr": "CN", + "mcc": "460", + "code": "86" + }, + { + "name": "Colombia", + "abbr": "CO", + "mcc": "732", + "code": "57" + }, + { + "name": "Congo", + "abbr": "CG", + "mcc": "629", + "code": "242" + }, + { + "name": "Cook Islands", + "abbr": "CK", + "mcc": "548", + "code": "682" + }, + { + "name": "Costa Rica", + "abbr": "CR", + "mcc": "712", + "code": "506" + }, + { + "name": "Croatia", + "abbr": "HR", + "mcc": "219", + "code": "385" + }, + { + "name": "Cuba", + "abbr": "CU", + "mcc": "368", + "code": "53" + }, + { + "name": "Curaçao", + "abbr": "CW", + "mcc": "362", + "code": "599" + }, + { + "name": "Cyprus", + "abbr": "CY", + "mcc": "280", + "code": "357" + }, + { + "name": "Czech Republic", + "abbr": "CZ", + "mcc": "230", + "code": "420" + }, + { + "name": "Denmark", + "abbr": "DK", + "mcc": "238", + "code": "45" + }, + { + "name": "Djibouti", + "abbr": "DJ", + "mcc": "638", + "code": "253" + }, + { + "name": "Dominica", + "abbr": "DM", + "mcc": "366", + "code": "1767" + }, + { + "name": "Dominican Republic", + "abbr": "DO", + "mcc": "370", + "code": "1809" + }, + { + "name": "Ecuador", + "abbr": "EC", + "mcc": "740", + "code": "593" + }, + { + "name": "Egypt", + "abbr": "EG", + "mcc": "602", + "code": "20" + }, + { + "name": "El Salvador", + "abbr": "SV", + "mcc": "706", + "code": "503" + }, + { + "name": "Equatorial Guinea", + "abbr": "GQ", + "mcc": "627", + "code": "240" + }, + { + "name": "Estonia", + "abbr": "EE", + "mcc": "248", + "code": "372" + }, + { + "name": "Ethiopia", + "abbr": "ET", + "mcc": "636", + "code": "251" + }, + { + "name": "Fiji", + "abbr": "FJ", + "mcc": "542", + "code": "679" + }, + { + "name": "Finland", + "abbr": "FI", + "mcc": "244", + "code": "358" + }, + { + "name": "France", + "abbr": "FR", + "mcc": "208", + "code": "33" + }, + { + "name": "French Guiana", + "abbr": "GF", + "mcc": "742", + "code": "594" + }, + { + "name": "French Polynesia", + "abbr": "PF", + "mcc": "547", + "code": "689" + }, + { + "name": "Gabon", + "abbr": "GA", + "mcc": "628", + "code": "241" + }, + { + "name": "Gambia", + "abbr": "GM", + "mcc": "607", + "code": "220" + }, + { + "name": "Germany", + "abbr": "DE", + "mcc": "262", + "code": "49" + }, + { + "name": "Ghana", + "abbr": "GH", + "mcc": "620", + "code": "233" + }, + { + "name": "Gibraltar", + "abbr": "GI", + "mcc": "266", + "code": "350" + }, + { + "name": "Greece", + "abbr": "GR", + "mcc": "202", + "code": "30" + }, + { + "name": "Greenland", + "abbr": "GL", + "mcc": "290", + "code": "299" + }, + { + "name": "Grenada", + "abbr": "GD", + "mcc": "352", + "code": "1473" + }, + { + "name": "Guam", + "abbr": "GU", + "mcc": "535", + "code": "1671" + }, + { + "name": "Guatemala", + "abbr": "GT", + "mcc": "704", + "code": "502" + }, + { + "name": "Guinea", + "abbr": "GN", + "mcc": "611", + "code": "224" + }, + { + "name": "Guyana", + "abbr": "GY", + "mcc": "738", + "code": "592" + }, + { + "name": "Haiti", + "abbr": "HT", + "mcc": "372", + "code": "509" + }, + { + "name": "Honduras", + "abbr": "HN", + "mcc": "708", + "code": "504" + }, + { + "name": "Hong Kong", + "abbr": "HK", + "mcc": "454", + "code": "852" + }, + { + "name": "Iceland", + "abbr": "IS", + "mcc": "274", + "code": "354" + }, + { + "name": "India", + "abbr": "IN", + "mcc": "404", + "code": "91" + }, + { + "name": "Indonesia", + "abbr": "ID", + "mcc": "510", + "code": "62" + }, + { + "name": "Iran, Islamic Republic of", + "abbr": "IR", + "mcc": "432", + "code": "98" + }, + { + "name": "Iraq", + "abbr": "IQ", + "mcc": "418", + "code": "964" + }, + { + "name": "Ireland", + "abbr": "IE", + "mcc": "272", + "code": "353" + }, + { + "name": "Israel", + "abbr": "IL", + "mcc": "425", + "code": "972" + }, + { + "name": "Italy", + "abbr": "IT", + "mcc": "222", + "code": "39" + }, + { + "name": "Jamaica", + "abbr": "JM", + "mcc": "338", + "code": "1876" + }, + { + "name": "Japan", + "abbr": "JP", + "mcc": "440", + "code": "81" + }, + { + "name": "Jordan", + "abbr": "JO", + "mcc": "416", + "code": "962" + }, + { + "name": "Kazakhstan", + "abbr": "KZ", + "mcc": "401", + "code": "327" + }, + { + "name": "Kenya", + "abbr": "KE", + "mcc": "639", + "code": "254" + }, + { + "name": "Kiribati", + "abbr": "KI", + "mcc": "545", + "code": "686" + }, + { + "name": "Korea, Republic of", + "abbr": "KR", + "mcc": "450", + "code": "82" + }, + { + "name": "Kuwait", + "abbr": "KW", + "mcc": "419", + "code": "965" + }, + { + "name": "Lao People's Democratic Republic", + "abbr": "LA", + "mcc": "457", + "code": "856" + }, + { + "name": "Latvia", + "abbr": "LV", + "mcc": "247", + "code": "371" + }, + { + "name": "Lebanon", + "abbr": "LB", + "mcc": "415", + "code": "961" + }, + { + "name": "Lesotho", + "abbr": "LS", + "mcc": "651", + "code": "266" + }, + { + "name": "Liberia", + "abbr": "LR", + "mcc": "618", + "code": "231" + }, + { + "name": "Libya", + "abbr": "LY", + "mcc": "606", + "code": "218" + }, + { + "name": "Lithuania", + "abbr": "LT", + "mcc": "246", + "code": "370" + }, + { + "name": "Luxembourg", + "abbr": "LU", + "mcc": "270", + "code": "352" + }, + { + "name": "Macao", + "abbr": "MO", + "mcc": "455", + "code": "853" + }, + { + "name": "Madagascar", + "abbr": "MG", + "mcc": "646", + "code": "261" + }, + { + "name": "Malawi", + "abbr": "MW", + "mcc": "650", + "code": "265" + }, + { + "name": "Malaysia", + "abbr": "MY", + "mcc": "502", + "code": "60" + }, + { + "name": "Maldives", + "abbr": "MV", + "mcc": "472", + "code": "960" + }, + { + "name": "Mali", + "abbr": "ML", + "mcc": "610", + "code": "223" + }, + { + "name": "Malta", + "abbr": "MT", + "mcc": "278", + "code": "356" + }, + { + "name": "Mauritius", + "abbr": "MU", + "mcc": "617", + "code": "230" + }, + { + "name": "Mexico", + "abbr": "MX", + "mcc": "334", + "code": "52" + }, + { + "name": "Moldova, Republic of", + "abbr": "MD", + "mcc": "259", + "code": "373" + }, + { + "name": "Monaco", + "abbr": "MC", + "mcc": "212", + "code": "377" + }, + { + "name": "Mongolia", + "abbr": "MN", + "mcc": "428", + "code": "976" + }, + { + "name": "Morocco", + "abbr": "MA", + "mcc": "604", + "code": "212" + }, + { + "name": "Mozambique", + "abbr": "MZ", + "mcc": "643", + "code": "258" + }, + { + "name": "Myanmar", + "abbr": "MM", + "mcc": "414", + "code": "95" + }, + { + "name": "Namibia", + "abbr": "NA", + "mcc": "649", + "code": "264" + }, + { + "name": "Nepal", + "abbr": "NP", + "mcc": "429", + "code": "977" + }, + { + "name": "Netherlands", + "abbr": "NL", + "mcc": "204", + "code": "31" + }, + { + "name": "New Zealand", + "abbr": "NZ", + "mcc": "530", + "code": "64" + }, + { + "name": "Nicaragua", + "abbr": "NI", + "mcc": "710", + "code": "505" + }, + { + "name": "Niger", + "abbr": "NE", + "mcc": "614", + "code": "227" + }, + { + "name": "Nigeria", + "abbr": "NG", + "mcc": "621", + "code": "234" + }, + { + "name": "Norway", + "abbr": "NO", + "mcc": "242", + "code": "47" + }, + { + "name": "Oman", + "abbr": "OM", + "mcc": "422", + "code": "968" + }, + { + "name": "Pakistan", + "abbr": "PK", + "mcc": "410", + "code": "92" + }, + { + "name": "Panama", + "abbr": "PA", + "mcc": "714", + "code": "507" + }, + { + "name": "Papua New Guinea", + "abbr": "PG", + "mcc": "537", + "code": "675" + }, + { + "name": "Paraguay", + "abbr": "PY", + "mcc": "744", + "code": "595" + }, + { + "name": "Peru", + "abbr": "PE", + "mcc": "716", + "code": "51" + }, + { + "name": "Philippines", + "abbr": "PH", + "mcc": "515", + "code": "63" + }, + { + "name": "Poland", + "abbr": "PL", + "mcc": "260", + "code": "48" + }, + { + "name": "Portugal", + "abbr": "PT", + "mcc": "268", + "code": "351" + }, + { + "name": "Puerto Rico", + "abbr": "PR", + "mcc": "330", + "code": "1787" + }, + { + "name": "Qatar", + "abbr": "QA", + "mcc": "427", + "code": "974" + }, + { + "name": "Romania", + "abbr": "RO", + "mcc": "226", + "code": "40" + }, + { + "name": "Saint Lucia", + "abbr": "LC", + "mcc": "358", + "code": "1758" + }, + { + "name": "San Marino", + "abbr": "SM", + "mcc": "292", + "code": "378" + }, + { + "name": "Sao Tome and Principe", + "abbr": "ST", + "mcc": "626", + "code": "239" + }, + { + "name": "Saudi Arabia", + "abbr": "SA", + "mcc": "420", + "code": "966" + }, + { + "name": "Senegal", + "abbr": "SN", + "mcc": "608", + "code": "221" + }, + { + "name": "Seychelles", + "abbr": "SC", + "mcc": "633", + "code": "248" + }, + { + "name": "Sierra Leone", + "abbr": "SL", + "mcc": "619", + "code": "232" + }, + { + "name": "Singapore", + "abbr": "SG", + "mcc": "525", + "code": "65" + }, + { + "name": "Slovakia", + "abbr": "SK", + "mcc": "231", + "code": "421" + }, + { + "name": "Slovenia", + "abbr": "SI", + "mcc": "293", + "code": "386" + }, + { + "name": "Solomon Islands", + "abbr": "SB", + "mcc": "540", + "code": "677" + }, + { + "name": "Somalia", + "abbr": "SO", + "mcc": "637", + "code": "252" + }, + { + "name": "South Africa", + "abbr": "ZA", + "mcc": "655", + "code": "27" + }, + { + "name": "Spain", + "abbr": "ES", + "mcc": "214", + "code": "34" + }, + { + "name": "Sri Lanka", + "abbr": "LK", + "mcc": "413", + "code": "94" + }, + { + "name": "Sudan", + "abbr": "SD", + "mcc": "634", + "code": "249" + }, + { + "name": "Suriname", + "abbr": "SR", + "mcc": "746", + "code": "597" + }, + { + "name": "Swaziland", + "abbr": "SZ", + "mcc": "653", + "code": "268" + }, + { + "name": "Sweden", + "abbr": "SE", + "mcc": "240", + "code": "46" + }, + { + "name": "Switzerland", + "abbr": "CH", + "mcc": "228", + "code": "41" + }, + { + "name": "Syrian Arab Republic", + "abbr": "SY", + "mcc": "417", + "code": "963" + }, + { + "name": "Taiwan", + "abbr": "TW", + "mcc": "466", + "code": "886" + }, + { + "name": "Vanuatu", + "abbr": "VU", + "mcc": "541", + "code": "678" + }, + { + "name": "Virgin Islands, British", + "abbr": "VG", + "mcc": "348", + "code": "1284" + }, + { + "name": "United Kingdom", + "abbr": "GB", + "mcc": "235", + "code": "44" + }, + { + "name": "United States", + "abbr": "US", + "mcc": "310", + "code": "1" + }, + { + "name": "Türkçe", + "abbr": "TR", + "mcc": "286", + "code": "90" + }, + { + "name": "United Arab Emirates", + "abbr": "UAE", + "mcc": "424", + "code": "971" + } +] \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/avroom/ButtonItemFactory.java b/app/src/main/java/com/chwl/app/avroom/ButtonItemFactory.java index d88bd66f6..571a08def 100644 --- a/app/src/main/java/com/chwl/app/avroom/ButtonItemFactory.java +++ b/app/src/main/java/com/chwl/app/avroom/ButtonItemFactory.java @@ -4,22 +4,16 @@ import android.annotation.SuppressLint; import android.content.Context; import android.text.TextUtils; -import com.hjq.toast.ToastUtils; -import com.netease.nim.uikit.business.uinfo.UserInfoHelper; -import com.netease.nim.uikit.common.util.log.LogUtil; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; -import com.orhanobut.logger.Logger; import com.chwl.app.R; import com.chwl.app.UIHelper; import com.chwl.app.avroom.widget.ViewItem; import com.chwl.app.common.widget.dialog.DialogManager; +import com.chwl.app.room_chat.activity.RoomMsgActivity; import com.chwl.app.ui.im.avtivity.NimFriendModel; import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity; import com.chwl.app.ui.widget.ButtonItem; import com.chwl.app.ui.widget.GiftDialog; import com.chwl.app.vip.util.VipHelper; -import com.chwl.app.room_chat.activity.RoomMsgActivity; import com.chwl.core.auth.AuthModel; import com.chwl.core.bean.RoomQueueInfo; import com.chwl.core.initial.InitialModel; @@ -40,6 +34,12 @@ import com.chwl.library.utils.JavaUtil; import com.chwl.library.utils.ResUtil; import com.chwl.library.utils.SingleToastUtil; import com.chwl.library.utils.config.BasicConfig; +import com.hjq.toast.ToastUtils; +import com.netease.nim.uikit.business.uinfo.UserInfoHelper; +import com.netease.nim.uikit.common.util.log.LogUtil; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; +import com.orhanobut.logger.Logger; import java.util.ArrayList; import java.util.HashMap; @@ -194,16 +194,8 @@ public class ButtonItemFactory { return buttonItems; } - /** - * 踩TA,当该人再房间中的时候,进入他所在的房间 - * - * @return - */ - private static ViewItem createFindMeItem() { - ViewItem viewItem = new ViewItem(ResUtil.getString(R.string.erban_avroom_buttonitemfactory_01), R.drawable.icon_dialog_find_ta, null); - viewItem.isFindTa = true; - return viewItem; - } + + /** * 根据account获取昵称 @@ -222,6 +214,19 @@ public class ButtonItemFactory { } + /** + * 踩TA,当该人再房间中的时候,进入他所在的房间 + * + * @return + */ + private static ViewItem createFindMeItem() { + ViewItem viewItem = new ViewItem(ResUtil.getString(R.string.erban_avroom_buttonitemfactory_01), R.drawable.icon_dialog_find_ta, null); + viewItem.isFindTa = true; + return viewItem; + } + + + /** * 私聊 */ diff --git a/app/src/main/java/com/chwl/app/avroom/widget/MessageView.java b/app/src/main/java/com/chwl/app/avroom/widget/MessageView.java index de34a0bde..284593956 100644 --- a/app/src/main/java/com/chwl/app/avroom/widget/MessageView.java +++ b/app/src/main/java/com/chwl/app/avroom/widget/MessageView.java @@ -56,6 +56,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; +import com.alibaba.fastjson.JSON; import com.bumptech.glide.request.target.Target; import com.chwl.app.R; import com.chwl.app.UIHelper; @@ -169,11 +170,13 @@ import com.chwl.core.treasurefairy.bean.FairyMsgInfoBean; import com.chwl.core.user.UserModel; import com.chwl.core.user.bean.UserInfo; import com.chwl.core.utils.ExtensionUtil; +import com.chwl.core.utils.JsonUtils; import com.chwl.core.utils.LogUtils; import com.chwl.core.utils.extension.StringExtensionKt; import com.chwl.core.utils.net.DontWarnObserver; import com.chwl.core.utils.net.RxHelper; import com.chwl.core.vip.bean.VipMessageInfo; +import com.chwl.library.common.util.OtherExtKt; import com.chwl.library.common.util.Utils; import com.chwl.library.rxbus.RxBus; import com.chwl.library.utils.FormatUtils; @@ -2809,6 +2812,28 @@ public class MessageView extends FrameLayout { String senderNick = ""; List nicks = attachment.getTargetNicks(); if (nicks != null && nicks.size() > 0) senderNick = RegexUtil.getPrintableString(attachment.getTargetNicks().get(0)); + ArrayList targets = attachment.getTargets(); + + if (OtherExtKt.isVerify(targets) && OtherExtKt.isVerify(0,targets)) { + String uid = targets.get(0); + ChatRoomMessageExtension chatRoomMessageExtension = chatRoomMessage.getChatRoomMessageExtension(); + if (chatRoomMessageExtension != null) { + Map senderExtension = chatRoomMessageExtension.getSenderExtension(); + if (senderExtension != null) { + Object o = ((Map) chatRoomMessage.getChatRoomMessageExtension().getSenderExtension()).get(uid); + if (o != null) { + String json = JSON.toJSONString(o); + OtherExtKt.doLog(json); + String nick = JsonUtils.getString(json, UserInfo.NICK, ""); + if (OtherExtKt.isVerify(nick)) { + senderNick = nick; + } + } + } + } + } + + if (attachment.getType() != NotificationType.ChatRoomMemberIn) return; // 座駕 diff --git a/app/src/main/java/com/chwl/app/avroom/widget/RoomEffectBoxView.kt b/app/src/main/java/com/chwl/app/avroom/widget/RoomEffectBoxView.kt index 2ee21eb1f..9a9cf5092 100644 --- a/app/src/main/java/com/chwl/app/avroom/widget/RoomEffectBoxView.kt +++ b/app/src/main/java/com/chwl/app/avroom/widget/RoomEffectBoxView.kt @@ -23,6 +23,7 @@ import android.view.animation.AnimationUtils import android.widget.FrameLayout import android.widget.ImageView import android.widget.TextView +import com.alibaba.fastjson.JSON import com.chwl.app.R import com.chwl.app.avroom.activity.AVRoomActivity import com.chwl.app.avroom.helper.AnimHelper @@ -47,8 +48,11 @@ import com.chwl.core.room.bean.DatingNotifyInfo import com.chwl.core.super_admin.util.SuperAdminUtil import com.chwl.core.user.UserModel import com.chwl.core.user.bean.UserInfo +import com.chwl.core.utils.JsonUtils import com.chwl.core.utils.extension.subAndReplaceDot +import com.chwl.library.common.util.doLog import com.chwl.library.common.util.isRtl +import com.chwl.library.common.util.isVerify import com.chwl.library.utils.ListUtils import com.chwl.library.utils.ResUtil import com.coorchice.library.SuperTextView @@ -714,10 +718,31 @@ class RoomEffectBoxView @JvmOverloads constructor( val attachment = chatRoomMessage.attachment as ChatRoomNotificationAttachment val remoteExtension = chatRoomMessage.remoteExtension ?: return val experLevelSeq = remoteExtension["experLevelSeq"] as Int - val targetNicks: List = attachment.targetNicks + val targetNicks: MutableList = attachment.targetNicks + val targets: List = attachment.targets if (ListUtils.isListEmpty(targetNicks)) { return } + + if (targets.getOrNull(0).isVerify()) { + val uid = targets.getOrNull(0) + val chatRoomMessageExtension = chatRoomMessage.chatRoomMessageExtension + if (chatRoomMessageExtension != null) { + val senderExtension = chatRoomMessageExtension.senderExtension + if (senderExtension != null) { + val o = (chatRoomMessage.chatRoomMessageExtension.senderExtension as Map)[uid] + if (o != null) { + val json = JSON.toJSONString(o) + json.doLog() + val nick = JsonUtils.getString(json, UserInfo.NICK, "") + if (nick.isVerify()) { + targetNicks[0] = nick + } + } + } + } + } + val fromType = remoteExtension["fromType"] as Int val fromNick = remoteExtension["fromNick"] as String? val textView = LayoutInflater.from(mContext) diff --git a/app/src/main/java/com/chwl/app/avroom/widget/RoomEffectView.kt b/app/src/main/java/com/chwl/app/avroom/widget/RoomEffectView.kt index 215e1e79e..f74624cc4 100644 --- a/app/src/main/java/com/chwl/app/avroom/widget/RoomEffectView.kt +++ b/app/src/main/java/com/chwl/app/avroom/widget/RoomEffectView.kt @@ -25,6 +25,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.text.HtmlCompat +import com.alibaba.fastjson.JSON import com.chwl.app.R import com.chwl.app.avroom.activity.AVRoomActivity import com.chwl.app.avroom.bean.RoomPlayBean @@ -68,8 +69,11 @@ import com.chwl.core.room.bean.DatingNotifyInfo import com.chwl.core.super_admin.util.SuperAdminUtil import com.chwl.core.user.UserModel import com.chwl.core.user.bean.UserInfo +import com.chwl.core.utils.JsonUtils import com.chwl.core.utils.extension.subAndReplaceDot +import com.chwl.library.common.util.doLog import com.chwl.library.common.util.isRtl +import com.chwl.library.common.util.isVerify import com.chwl.library.utils.ListUtils import com.chwl.library.utils.ResUtil import com.chwl.library.utils.StringUtils @@ -1431,10 +1435,31 @@ class RoomEffectView @JvmOverloads constructor( val attachment = chatRoomMessage.attachment as ChatRoomNotificationAttachment val remoteExtension = chatRoomMessage.remoteExtension ?: return val experLevelSeq = remoteExtension["experLevelSeq"] as Int - val targetNicks: List = attachment.targetNicks + val targetNicks: MutableList = attachment.targetNicks + val targets: List = attachment.targets if (ListUtils.isListEmpty(targetNicks)) { return } + + if (targets.getOrNull(0).isVerify()) { + val uid = targets.getOrNull(0) + val chatRoomMessageExtension = chatRoomMessage.chatRoomMessageExtension + if (chatRoomMessageExtension != null) { + val senderExtension = chatRoomMessageExtension.senderExtension + if (senderExtension != null) { + val o = (chatRoomMessage.chatRoomMessageExtension.senderExtension as Map)[uid] + if (o != null) { + val json = JSON.toJSONString(o) + json.doLog() + val nick = JsonUtils.getString(json, UserInfo.NICK, "") + if (nick.isVerify()) { + targetNicks[0] = nick + } + } + } + } + } + val fromType = remoteExtension["fromType"] as Int val fromNick = remoteExtension["fromNick"] as String? val textView = LayoutInflater.from(mContext) diff --git a/app/src/main/java/com/chwl/app/ui/widget/UserInfoDialog.java b/app/src/main/java/com/chwl/app/ui/widget/UserInfoDialog.java index 7a254b2f6..4e0ca61b3 100644 --- a/app/src/main/java/com/chwl/app/ui/widget/UserInfoDialog.java +++ b/app/src/main/java/com/chwl/app/ui/widget/UserInfoDialog.java @@ -14,11 +14,9 @@ import android.text.TextUtils; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -1138,15 +1136,6 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe } } - private TextView getTextView(String text) { - TextView textView = new TextView(getContext()); - textView.setText(text); - textView.setTextColor(getContext().getResources().getColor(R.color.color_333333)); - textView.setTextSize(14); - textView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT)); - textView.setGravity(Gravity.CENTER); - return textView; - } private ViewItem createClearGiftValueItem() { return new ViewItem(getString(R.string.ui_widget_userinfodialog_013), R.drawable.user_card_ic_clean_gift_value, true, new ViewItem.OnClickListener() { @@ -1184,102 +1173,6 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe }); } - /** - * 下麦前需要判断是否是ktv模式或者龙珠 - */ - private void showDownMicDialog() { - if (AvRoomDataManager.get().mCurrentRoomInfo == null) { - return; - } - - if (AvRoomDataManager.get().isSelfGamePlaying()) { - SingleToastUtil.showToast(getString(R.string.ui_widget_userinfodialog_017)); - return; - } - if (AvRoomDataManager.get().haveStartDragon) { - new DialogManager(context).showOkCancelDialog(getString(R.string.ui_widget_userinfodialog_018), false, new DialogManager.OkCancelDialogListener() { - @Override - public void onCancel() { - } - - @Override - public void onOk() { - DragonBallModel.get() - .clearDragonBar() - .doOnSuccess(s -> { - AvRoomDataManager.get().haveStartDragon = false; - cancelDragon(); - handleDownMicro(); - }) - .subscribe(); - } - }); - } else { - handleDownMicro(); - } - } - - private void handleDownMicro() { - if (AvRoomDataManager.get().isShowGiftValue() - && GiftValueDialogUiHelper.get().isNeedConfirmDialog(GiftValueDialogUiHelper.TYPE_DOWN_MIC)) { - GiftValueDialogUiHelper.get().showGiftValueDialog(context, null, GiftValueDialogUiHelper.TYPE_DOWN_MIC, - this::downMicCode); - } else { - downMicCode(); - } - } - - /** - * 下麦的代码 - */ - private void downMicCode() { - long currentUid = AuthModel.get().getCurrentUid(); - int micPos = AvRoomDataManager.get().getMicPosition(currentUid); - IMNetEaseManager.get().downMicroPhoneBySdk( - micPos, null); - } - - - public void cancelDragon() { - RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo == null) return; - // 普通表情 - final ChatRoomMessage message = getChatRoomMessage(roomInfo, AvRoomDataManager.get().dragons, CUSTOM_MSG_DRAGON_BAR_CANCEL); - IMNetEaseManager.get().sendChatRoomMessage(message, false) - .subscribe((chatRoomMessage, throwable) -> { - IMNetEaseManager.get().getChatRoomEventObservable(). - onNext(new RoomEvent().setEvent(DRAGON_BAR_CANCEL) - .setChatRoomMessage(chatRoomMessage)); - IMNetEaseManager.get().addMessages(chatRoomMessage); - - }); - } - - private ChatRoomMessage getChatRoomMessage(RoomInfo roomInfo, List integers, int second) { - UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); - List faceReceiveInfos = new ArrayList<>(); - FaceReceiveInfo faceReceiveInfo = new FaceReceiveInfo(); - faceReceiveInfo.setNick(userInfo.getNick()); - faceReceiveInfo.setFaceId(Constants.DRAGON_BAR_ID); - faceReceiveInfo.setUid(userInfo.getUid()); - - faceReceiveInfo.setResultIndexes(integers); - faceReceiveInfos.add(faceReceiveInfo); - - // 发送云信信息给所有人 - FaceAttachment faceAttachment = - new FaceAttachment(CUSTOM_MSG_DRAGON_BAR, second); - faceAttachment.setUid(userInfo.getUid()); - faceAttachment.setFaceReceiveInfos(faceReceiveInfos); - - return ChatRoomMessageBuilder.createChatRoomCustomMessage( - // 聊天室id - roomInfo.getRoomId() + "", - // 自定义消息 - faceAttachment - ); - } - private ViewItem createBanMicItem(int micPosition) { return new ViewItem(getString(R.string.ui_widget_userinfodialog_019), R.drawable.user_card_ic_close_mic, true, new ViewItem.OnClickListener() { @Override @@ -1474,6 +1367,103 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe }); } + + /** + * 下麦前需要判断是否是ktv模式或者龙珠 + */ + private void showDownMicDialog() { + if (AvRoomDataManager.get().mCurrentRoomInfo == null) { + return; + } + + if (AvRoomDataManager.get().isSelfGamePlaying()) { + SingleToastUtil.showToast(getString(R.string.ui_widget_userinfodialog_017)); + return; + } + if (AvRoomDataManager.get().haveStartDragon) { + new DialogManager(context).showOkCancelDialog(getString(R.string.ui_widget_userinfodialog_018), false, new DialogManager.OkCancelDialogListener() { + @Override + public void onCancel() { + } + + @Override + public void onOk() { + DragonBallModel.get() + .clearDragonBar() + .doOnSuccess(s -> { + AvRoomDataManager.get().haveStartDragon = false; + cancelDragon(); + handleDownMicro(); + }) + .subscribe(); + } + }); + } else { + handleDownMicro(); + } + } + + private void handleDownMicro() { + if (AvRoomDataManager.get().isShowGiftValue() + && GiftValueDialogUiHelper.get().isNeedConfirmDialog(GiftValueDialogUiHelper.TYPE_DOWN_MIC)) { + GiftValueDialogUiHelper.get().showGiftValueDialog(context, null, GiftValueDialogUiHelper.TYPE_DOWN_MIC, + this::downMicCode); + } else { + downMicCode(); + } + } + + /** + * 下麦的代码 + */ + private void downMicCode() { + long currentUid = AuthModel.get().getCurrentUid(); + int micPos = AvRoomDataManager.get().getMicPosition(currentUid); + IMNetEaseManager.get().downMicroPhoneBySdk( + micPos, null); + } + + + public void cancelDragon() { + RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; + if (roomInfo == null) return; + // 普通表情 + final ChatRoomMessage message = getChatRoomMessage(roomInfo, AvRoomDataManager.get().dragons, CUSTOM_MSG_DRAGON_BAR_CANCEL); + IMNetEaseManager.get().sendChatRoomMessage(message, false) + .subscribe((chatRoomMessage, throwable) -> { + IMNetEaseManager.get().getChatRoomEventObservable(). + onNext(new RoomEvent().setEvent(DRAGON_BAR_CANCEL) + .setChatRoomMessage(chatRoomMessage)); + IMNetEaseManager.get().addMessages(chatRoomMessage); + + }); + } + + private ChatRoomMessage getChatRoomMessage(RoomInfo roomInfo, List integers, int second) { + UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); + List faceReceiveInfos = new ArrayList<>(); + FaceReceiveInfo faceReceiveInfo = new FaceReceiveInfo(); + faceReceiveInfo.setNick(userInfo.getNick()); + faceReceiveInfo.setFaceId(Constants.DRAGON_BAR_ID); + faceReceiveInfo.setUid(userInfo.getUid()); + + faceReceiveInfo.setResultIndexes(integers); + faceReceiveInfos.add(faceReceiveInfo); + + // 发送云信信息给所有人 + FaceAttachment faceAttachment = + new FaceAttachment(CUSTOM_MSG_DRAGON_BAR, second); + faceAttachment.setUid(userInfo.getUid()); + faceAttachment.setFaceReceiveInfos(faceReceiveInfos); + + return ChatRoomMessageBuilder.createChatRoomCustomMessage( + // 聊天室id + roomInfo.getRoomId() + "", + // 自定义消息 + faceAttachment + ); + } + @SuppressLint("CheckResult") private void kickDownMicCode() { int micPosition = AvRoomDataManager.get().getMicPosition(uid); diff --git a/app/src/main/res/layout/home_item_room.xml b/app/src/main/res/layout/home_item_room.xml index c61897671..b6f067ed1 100644 --- a/app/src/main/res/layout/home_item_room.xml +++ b/app/src/main/res/layout/home_item_room.xml @@ -151,17 +151,18 @@ android:id="@+id/tv_online_number" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:lines="1" android:layout_marginBottom="15dp" android:drawableStart="@drawable/home_ic_hot" android:drawablePadding="3dp" android:gravity="center_vertical" android:includeFontPadding="false" + android:layout_marginEnd="11dp" android:textColor="#84868A" android:textSize="12sp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="@id/boomIcon" - app:layout_constraintStart_toStartOf="@id/boomIcon" - tools:text="266" /> + app:layout_constraintEnd_toEndOf="parent" + tools:text="9999999" /> + tools:text="123123123123123123123123123123123123123" /> + tools:text="NameNameNameNameNameNameNameNameNameNameNameNameNameNameNameNameNameNameNameName" /> diff --git a/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java b/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java index 52a1e597e..384cbc3b8 100644 --- a/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java +++ b/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java @@ -1775,8 +1775,10 @@ public final class IMNetEaseManager { } if (!needToHideEnterMessage(msg)) { + // 添加消息到公屏 addMessagesImmediately(msg); //需要稍微延遲點,否則有沖突 + //通知播放 进场横幅动画 new Handler().postDelayed(() -> noticeMemBerInNotice(msg), 500); } else { if (Objects.equals(String.valueOf(AuthModel.get().getCurrentUid()), account)) { diff --git a/core/src/main/java/com/chwl/core/utils/JsonUtils.java b/core/src/main/java/com/chwl/core/utils/JsonUtils.java new file mode 100644 index 000000000..196895f88 --- /dev/null +++ b/core/src/main/java/com/chwl/core/utils/JsonUtils.java @@ -0,0 +1,256 @@ +package com.chwl.core.utils; + + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +/** + *
+ *     author: Blankj
+ *     blog  : http://blankj.com
+ *     time  : 2019/01/07
+ *     desc  : utils about json
+ * 
+ */ +public final class JsonUtils { + + private static final byte TYPE_BOOLEAN = 0x00; + private static final byte TYPE_INT = 0x01; + private static final byte TYPE_LONG = 0x02; + private static final byte TYPE_DOUBLE = 0x03; + private static final byte TYPE_STRING = 0x04; + private static final byte TYPE_JSON_OBJECT = 0x05; + private static final byte TYPE_JSON_ARRAY = 0x06; + + private JsonUtils() { + throw new UnsupportedOperationException("u can't instantiate me..."); + } + + + /** + * Checks if a given input is a JSONObject. + * + * @param input Anything. + * @return true if it is a JSONObject. + */ + public static boolean isJSONObject(final T input) { + return input instanceof JSONObject; + } + + /** + * Checks if a given input is a JSONArray + * + * @param input Anything. + * @return true if it is a JSONArray. + */ + public static boolean isJSONArray(final T input) { + return input instanceof JSONArray; + } + + public static boolean getBoolean(final JSONObject jsonObject, + final String key) { + return getBoolean(jsonObject, key, false); + } + + public static boolean getBoolean(final JSONObject jsonObject, + final String key, + final boolean defaultValue) { + return getValueByType(jsonObject, key, defaultValue, TYPE_BOOLEAN); + } + + public static boolean getBoolean(final String json, + final String key) { + return getBoolean(json, key, false); + } + + public static boolean getBoolean(final String json, + final String key, + final boolean defaultValue) { + return getValueByType(json, key, defaultValue, TYPE_BOOLEAN); + } + + public static int getInt(final JSONObject jsonObject, + final String key) { + return getInt(jsonObject, key, -1); + } + + public static int getInt(final JSONObject jsonObject, + final String key, + final int defaultValue) { + return getValueByType(jsonObject, key, defaultValue, TYPE_INT); + } + + public static int getInt(final String json, + final String key) { + return getInt(json, key, -1); + } + + public static int getInt(final String json, + final String key, + final int defaultValue) { + return getValueByType(json, key, defaultValue, TYPE_INT); + } + + public static long getLong(final JSONObject jsonObject, + final String key) { + return getLong(jsonObject, key, -1); + } + + public static long getLong(final JSONObject jsonObject, + final String key, + final long defaultValue) { + return getValueByType(jsonObject, key, defaultValue, TYPE_LONG); + } + + public static long getLong(final String json, + final String key) { + return getLong(json, key, -1); + } + + public static long getLong(final String json, + final String key, + final long defaultValue) { + return getValueByType(json, key, defaultValue, TYPE_LONG); + } + + public static double getDouble(final JSONObject jsonObject, + final String key) { + return getDouble(jsonObject, key, -1); + } + + public static double getDouble(final JSONObject jsonObject, + final String key, + final double defaultValue) { + return getValueByType(jsonObject, key, defaultValue, TYPE_DOUBLE); + } + + public static double getDouble(final String json, + final String key) { + return getDouble(json, key, -1); + } + + public static double getDouble(final String json, + final String key, + final double defaultValue) { + return getValueByType(json, key, defaultValue, TYPE_DOUBLE); + } + + public static String getString(final JSONObject jsonObject, + final String key) { + return getString(jsonObject, key, ""); + } + + public static String getString(final JSONObject jsonObject, + final String key, + final String defaultValue) { + return getValueByType(jsonObject, key, defaultValue, TYPE_STRING); + } + + public static String getString(final String json, + final String key) { + return getString(json, key, ""); + } + + public static String getString(final String json, + final String key, + final String defaultValue) { + return getValueByType(json, key, defaultValue, TYPE_STRING); + } + + public static JSONObject getJSONObject(final JSONObject jsonObject, + final String key, + final JSONObject defaultValue) { + return getValueByType(jsonObject, key, defaultValue, TYPE_JSON_OBJECT); + } + + public static JSONObject getJSONObject(final String json, + final String key, + final JSONObject defaultValue) { + return getValueByType(json, key, defaultValue, TYPE_JSON_OBJECT); + } + + public static JSONArray getJSONArray(final JSONObject jsonObject, + final String key, + final JSONArray defaultValue) { + return getValueByType(jsonObject, key, defaultValue, TYPE_JSON_ARRAY); + } + + public static JSONArray getJSONArray(final String json, + final String key, + final JSONArray defaultValue) { + return getValueByType(json, key, defaultValue, TYPE_JSON_ARRAY); + } + + private static T getValueByType(final JSONObject jsonObject, + final String key, + final T defaultValue, + final byte type) { + if (jsonObject == null || key == null || key.length() == 0) { + return defaultValue; + } + try { + Object ret; + if (type == TYPE_BOOLEAN) { + ret = jsonObject.getBoolean(key); + } else if (type == TYPE_INT) { + ret = jsonObject.getInt(key); + } else if (type == TYPE_LONG) { + ret = jsonObject.getLong(key); + } else if (type == TYPE_DOUBLE) { + ret = jsonObject.getDouble(key); + } else if (type == TYPE_STRING) { + ret = jsonObject.getString(key); + } else if (type == TYPE_JSON_OBJECT) { + ret = jsonObject.getJSONObject(key); + } else if (type == TYPE_JSON_ARRAY) { + ret = jsonObject.getJSONArray(key); + } else { + return defaultValue; + } + //noinspection unchecked + return (T) ret; + } catch (JSONException e) { + e.printStackTrace(); + return defaultValue; + } + } + + private static T getValueByType(final String json, + final String key, + final T defaultValue, + final byte type) { + if (json == null || json.length() == 0 + || key == null || key.length() == 0) { + return defaultValue; + } + try { + return getValueByType(new JSONObject(json), key, defaultValue, type); + } catch (JSONException e) { + e.printStackTrace(); + return defaultValue; + } + } + + public static String formatJson(final String json) { + return formatJson(json, 4); + } + + public static String formatJson(final String json, final int indentSpaces) { + try { + for (int i = 0, len = json.length(); i < len; i++) { + char c = json.charAt(i); + if (c == '{') { + return new JSONObject(json).toString(indentSpaces); + } else if (c == '[') { + return new JSONArray(json).toString(indentSpaces); + } else if (!Character.isWhitespace(c)) { + return json; + } + } + } catch (JSONException e) { + e.printStackTrace(); + } + return json; + } +} diff --git a/mode.json b/mode.json index 773c0a4fc..6afbb60c4 100644 --- a/mode.json +++ b/mode.json @@ -1,83 +1,29 @@ { - "code": 200, - "message": "success", - "data": { - "totalPage": 1, - "nameplateList": [ - { - "id": 406, - "uid": 3224, - "nameplateId": 101, - "isCustomWord": true, - "word": " 555", - "remark": " 555", - "expireTime": 1738663248000, - "createTime": 1731319248000, - "updateTime": 1731319248000, - "nameplateName": " 555", - "nameplateImage": "https://image.pekolive.com/11094f2f00fb491f963132463bab97ec.png", - "isExpired": false, - "expireDays": 62, - "isUsing": false, - "iconPic": "https://image.pekolive.com/gonghuizhangmingpaikaobei.png", - "fixedWord": " 555", - "nameplateType": "1", - "dressShopId": 33, - "dressPrice": 1000, - "discountPrice": 950, - "vipLevel": 5, - "discount": 95, - "dressDay": 9 - }, - { - "id": 529, - "uid": 3224, - "nameplateId": 100, - "isCustomWord": false, - "word": " ", - "remark": " ", - "expireTime": 1737195843000, - "createTime": 1733307843000, - "updateTime": 1733307843000, - "nameplateName": "schoolgirl-Advanced", - "nameplateImage": "https://image.pekolive.com/guanfangzhuli-bajisitan.png", - "isExpired": false, - "expireDays": 45, - "isUsing": true, - "iconPic": "https://image.pekolive.com/guanfangzhuli-bajisitan.png", - "nameplateType": "1", - "dressShopId": 84, - "dressPrice": 2233, - "discountPrice": 2121, - "vipLevel": 5, - "discount": 95, - "dressDay": 9 - }, - { - "id": 407, - "uid": 3224, - "nameplateId": 100, - "isCustomWord": false, - "word": " ", - "remark": " ", - "expireTime": 1733220061000, - "createTime": 1731319261000, - "updateTime": 1731319261000, - "nameplateName": "schoolgirl-Advanced", - "nameplateImage": "https://image.pekolive.com/guanfangzhuli-bajisitan.png", - "isExpired": true, - "expireDays": 0, - "isUsing": false, - "iconPic": "https://image.pekolive.com/guanfangzhuli-bajisitan.png", - "nameplateType": "1", - "dressShopId": 84, - "dressPrice": 2233, - "discountPrice": 2121, - "vipLevel": 5, - "discount": 95, - "dressDay": 9 - } - ] - }, - "timestamp": 1733307990888 -} + "enterRoomEffects": "https://image.molistar.xyz/v6_enter_effect.svga", + "charmUrl": "https://image.pekolive.com/Charm_52.png", + "gender": 1, + "carName": "boom11", + "official": false, + "officialAnchorCertificationIcon": "", + "pic": "https://image.pekolive.com/Vip6headdress.png", + "androidBubbleUrl": "https://image.molistar.xyz/v6_chatbubble_android.png", + "platformRole": 0, + "nick": "Molistar", + "fromType": 0, + "headWearUrl": "https://image.pekolive.com/Vip6headdress.svga", + "headWearType": 1, + "experUrl": "https://image.pekolive.com/Wealth_48.png", + "experLevelSeq": 48, + "inRoomNameplateWord": " ", + "hasPrettyErbanNo": false, + "iosBubbleUrl": "https://image.molistar.xyz/v6_chatbubble_ios.png", + "avatar": "https://image.pekolive.com/bfed3b08-1ebe-42dc-b9a4-619cb2da0e43.gif", + "enterHide": false, + "vipIcon": "https://image.molistar.xyz/VIP6_nameplate.png", + "inRoomNameplatePic": "https://image.pekolive.com/guanfangzhuli-bajisitan.png", + "newUser": false, + "effect": "https://image.pekolive.com/Vip6headdress.svga", + "fromSayHelloChannel": false, + "defUser": 1, + "officialAnchorCertificationName": "" +} at (RoomEffectView.kt:1453)