如何在Android中访问Google Fit用户的电子邮件

时间:2018-09-13 06:42:44

标签: android google-fit google-fit-sdk

我正在Android上构建步进跟踪器,并成功与Google Fit集成。但是,我无法访问用户的Gmail地址。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

要检索用户的电子邮件地址,您必须实现Google Plus API,要使用plus API,请确保在import random import matplotlib # Make sure that we are using QT5 matplotlib.use('Qt5Agg') from PyQt5 import QtCore, QtGui, QtWidgets, QtMultimedia, QtMultimediaWidgets from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure import matplotlib.animation as animation class MyMplCanvas(FigureCanvas): def __init__(self, parent=None, width=5, height=4, dpi=100): fig = Figure(figsize=(width, height), dpi=dpi) # https://stackoverflow.com/a/6981055/6622587 ax = fig.add_subplot(111) # The big subplot self.ax = fig.add_subplot(211) self.bx = fig.add_subplot(212) FigureCanvas.__init__(self, fig) self.setParent(parent) FigureCanvas.setSizePolicy(self, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) FigureCanvas.updateGeometry(self) ax.set_title('TMP102 Temperature over Time') ax.spines['top'].set_color('none') ax.spines['bottom'].set_color('none') ax.spines['left'].set_color('none') ax.spines['right'].set_color('none') ax.tick_params(labelcolor='w', top=False, bottom=False, left=False, right=False) ax.set_xlabel('Samples') ax.set_ylabel('Temperature (deg C)') self.x_len = 200 # Number of points to display self.y_range = [10, 40] # Range of possible Y values to display self.xs = list(range(0, 200)) self.ys = [0 for _ in range(self.x_len)] self.anim = animation.FuncAnimation(fig, self.animate, init_func=self.init, interval=50,blit=True) def init(self): y_range = [10, 40] self.ax.set_ylim(*y_range) self.bx.set_ylim(*y_range) self.line, = self.ax.plot(self.xs, self.ys) self.line2, = self.bx.plot(self.xs, self.ys) return self.line, self.line2 def animate(self, i): temp_c = random.randint(15, 35) self.ys.append(temp_c) self.ys = self.ys[-self.x_len:] self.line.set_ydata(self.ys) self.line2.set_ydata(self.ys) return self.line, self.line2 class ApplicationWindow(QtWidgets.QMainWindow): def __init__(self, parent=None): super(ApplicationWindow, self).__init__(parent) main_widget = QtWidgets.QWidget() l = QtWidgets.QVBoxLayout(main_widget) sc = MyMplCanvas(main_widget, width=5, height=4, dpi=100) l.addWidget(sc) self.setCentralWidget(main_widget) class VideoWindow(QtWidgets.QMainWindow): def __init__(self, parent=None): super(VideoWindow, self).__init__(parent) self.setWindowTitle("PyQt Video Player Widget Example - pythonprogramminglanguage.com") self.mediaPlayer = QtMultimedia.QMediaPlayer(self, QtMultimedia.QMediaPlayer.VideoSurface) videoWidget = QtMultimediaWidgets.QVideoWidget() self.playButton = QtWidgets.QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QtWidgets.QSlider(QtCore.Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.errorLabel =QtWidgets.QLabel() self.errorLabel.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) # Create new action openAction = QtWidgets.QAction(QtGui.QIcon('open.png'), '&Open', self) openAction.setShortcut('Ctrl+O') openAction.setStatusTip('Open movie') openAction.triggered.connect(self.openFile) # Create exit action exitAction = QtWidgets.QAction(QtGui.QIcon('exit.png'), '&Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.setStatusTip('Exit application') exitAction.triggered.connect(self.exitCall) # Create menu bar and add action menuBar = self.menuBar() fileMenu = menuBar.addMenu('&File') #fileMenu.addAction(newAction) fileMenu.addAction(openAction) fileMenu.addAction(exitAction) # Create a widget for window contents wid = QtWidgets.QWidget() self.setCentralWidget(wid) # Create layouts to place inside widget controlLayout = QtWidgets.QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QtWidgets.QVBoxLayout() layout.addWidget(videoWidget) layout.addLayout(controlLayout) layout.addWidget(self.errorLabel) # Set widget to contain window contents wid.setLayout(layout) self.mediaPlayer.setVideoOutput(videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) def openFile(self): fileName, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Open Movie", QtCore.QDir.homePath()) if fileName: media = QtMultimedia.QMediaContent(QtCore.QUrl.fromLocalFile(fileName)) self.mediaPlayer.setMedia(media) self.playButton.setEnabled(True) def exitCall(self): QtWidgets.QApplication.quit() def play(self): if self.mediaPlayer.state() == QtMultimedia.QMediaPlayer.PlayingState: self.mediaPlayer.pause() else: self.mediaPlayer.play() def mediaStateChanged(self, state): if self.mediaPlayer.state() == QtMultimedia.QMediaPlayer.PlayingState: self.playButton.setIcon( self.style().standardIcon(QtWidgets.QStyle.SP_MediaPause)) else: self.playButton.setIcon( self.style().standardIcon(QtWidgets.QStyle.SP_MediaPlay)) def positionChanged(self, position): self.positionSlider.setValue(position) def durationChanged(self, duration): self.positionSlider.setRange(0, duration) def setPosition(self, position): self.mediaPlayer.setPosition(position) def handleError(self): self.playButton.setEnabled(False) self.errorLabel.setText("Error: " + self.mediaPlayer.errorString()) if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) player = VideoWindow() player.resize(640, 480) player.show() w = ApplicationWindow() w.show() sys.exit(app.exec_()) 中添加播放服务依赖项。

build.grade

之后,使用此代码段检索用户电子邮件地址。

compile com.google.android.gms:play-services-plus:15.0.1