我想实施Enable/Disable mobile data and GPS settings
。
我搜索了启用/禁用移动数据和GPS设置的可用Android API,以下是我的发现。
启用/停用移动数据 -
1.可以在< 5.0 Android OS中执行启用/禁用。
2.从5.0以上的Android操作系统,非系统应用程序尚无法启用/禁用移动数据。
从5.0或更高版本开始,我们在执行此操作时会遇到此异常 - 这不是第三方应用程序使用的。
原因是:java.lang.SecurityException:
Neither user 10314 nor current process has android.permission.MODIFY_PHONE_STATE
。
是否有可用/可用的解决方案?
GPS设置 - 1.我们能够以编程方式在位置上但尚未找到禁用它的方法(不包括Intent方法)。
任何人都知道如何在不通过意图移动到设置的情况下禁用GPS(以编程方式定位)。
先谢谢。
答案 0 :(得分:1)
我们正在更改GPS设置,而不使用 SettingsApi
移至设置屏幕要检查GPS是开启还是关闭,您必须检查如下,
# -*- coding: utf-8 -*-
'''
한국어 형태 분석된 자료를 word2Vec모델로 만드는 모듈
입력은 형태분석된 파일을 취함
한 줄에 한 문장씩
출력으로 model을 형성
'''
import codecs
import gensim
import multiprocessing
import word2vec
import sys
reload(sys)
sys.setdefaultencoding('utf8')
# 모델 configuration 설정
config = {
'min_count': 15, # 등장 횟수가 15 이하인 단어는 무시
'size': 300, # 300차원짜리 벡터스페이스에 embedding
'sg': 1, # 0이면 CBOW, 1이면 skip-gram
'batch_words': 10000, # 사전을 구축할때 한번에 읽을 단어 수
'iter': 10, # 보통 딥러닝에서 말하는 epoch과 비슷한, 반복 횟수
'workers': multiprocessing.cpu_count(),
}
modelTwitterNoStop = gensim.models.Word2Vec(**config)
class SentenceReader:
def __init__(self, filepath):
self.filepath = filepath
def __iter__(self):
for line in codecs.open(self.filepath, encoding='utf-8'):
yield line.split(' ')
# 사전과 학습을 형태분석된 파일을 가지고 행함
sentences_vocab = SentenceReader('corpusAllNewsNoTagNoStop.txt')
sentences_train = SentenceReader('corpusAllNewsNoTagNoStop.txt')
#model = gensim.models.Word2Vec()
modelTwitterNoStop.build_vocab(sentences_vocab)
modelTwitterNoStop.train(sentences_train)
#이렇게 학습된 모델을 저장
modelTwitterNoStop.save('modelTwitterNoStop')
### 모델 테스트 ##########
#다음 라인부터는 분리하여 별도로 Test모델 프로그램을 만들어 다양한 관계를 실험해 볼 수 있음
import codecs
import gensim
import multiprocessing
import sys
reload(sys)
sys.setdefaultencoding('utf8')
##도 포함
#만들어 놓은 gensim 모델을 로딩
modelTwitterNoStop = gensim.models.Word2Vec.load('modelTwitterNoStop')
#most similar Test - 상위 10개의 유사한 벡터를 찾음.. 실제로 '일본'이 가장 높은 것으로 나
print ' '.join(["{}-{}".format(word, value) for word, value in
(modelTwitterNoStop.most_similar(positive=[u"한국", u"도쿄"], negative=[u"서 울"], topn=10))])
print "\n"
# positive만 사용해서도 할 수 있으며 cosmul을 이용
print ' '.join(["{}-{}".format(word, value) for word, value in
(modelTwitterNoStop.most_similar_cosmul(positive=[u"비선", u"최순실"], topn=20))])
print "\n"
#doesn't match Test
print modelTwitterNoStop.doesnt_match(u"정윤회 김종 박근혜 최순실".split())
print "\n"
#similarity Test
print modelTwitterNoStop.similarity(u"비선", u"정윤회")
print "\n"
# no.of vocab.. in this model
print modelTwitterNoStop
print "\n"
}
答案 1 :(得分:0)
这是如何从GPS和网络(Wi-Fi /数据)提供商启动定位服务。
LocationManager locationManager = (LocationManager)getContext().getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,locationListener);
如果您想停止侦听位置更新,请运行以下代码:
locationManager.removeUpdates(locationListener);
单行代码将停止侦听任何位置更新,无论提供商(GPS /网络)如何,因为LocationManager不关心更新的来源。
在您的情况下,我假设您知道如何创建一些UI以让用户决定是否使用GPS /网络。然后,你可以这样做:
if ( useGPS ) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
}
if ( useNetwork ) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,locationListener);
}
如果用户启用了两个提供商,则位置更新可能更准确。如果用户禁用了两个提供程序,则无关紧要。由于LocationListener没有更新,因此它应该是用户想要的。
顺便说一句,这是创建LocationListener的代码:
LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// you may add some logic here to determine whether the new location update is more accurate than the previous one
if ( isBetterLocation(location,currentBestLocation) ) {
currentBestLocation = location;
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};