на всякий случай кто-то приходит к этому вопросу, у меня есть более простая версия.
public static MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button);
Button b2 = (Button) findViewById(R.id.button2);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp = MediaPlayer.create(MainActivity.this, R.raw.game);
mp.start();
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.stop();
// mp.start();
}
});
}
Из Документов:
Режим HTML5
Серверная сторона
Используя это режим требует перезаписи URL-адресов на стороне сервера, в основном вы должны переписать все свои ссылки на точку входа вашего приложения (например, index.html). Требование к тегу
<base>
также важно для этого случая, так как позволяет AngularJS различать часть URL-адреса, которая является базой приложения, и путь, который должен обрабатывать приложение.- Руководство разработчика AngularJS - Использование $ location (сторона сервера HTML5)
blockquote>Для NodeJS и ExpressJS
var express = require('express'); var path = require('path'); var router = express.Router(); // serve angular front end files from root path router.use('/', express.static('app', { redirect: false })); // rewrite virtual urls to angular app to enable refreshing of internal pages router.get('*', function (req, res, next) { res.sendFile(path.resolve('app/index.html')); }); module.exports = router;
Для IIS в Windows
<rewrite> <rules> <rule name="AngularJS" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="/" /> </rule> </rules> </rewrite>
См., Как настроить IIS для URL-адреса Переписывание приложения AngularJS в режиме HTML5?
Для apache
RewriteEngine On RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d RewriteRule ^ - [L] RewriteRule ^
] См. Как переписать url в apache htaccess для приложения angularjs
Для получения дополнительной информации
Статья: AngularJS - Включить страницу режима HTML5 Обновить без 404 Ошибки в NodeJS и IIS .
У меня была такая же проблема с использованием http-сервера как моего локального веб-сервера, его известной проблемы с html5 и подробностей в угловом ui / ui-router FAQ .
Я переключился на Nginx (установите через apt-get) со следующим /etc/nginx/sites-enabled/default
server {
listen 80 default_server;
listen [::]:80 default_server;
#root /var/www/html;
root /home/conor/workspace/code_institute/route_test;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
#server_name _;
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.html;
}
}
. Для запуска / остановки / перезагрузки после изменений;
sudo service nginx <start|stop|status>
Apache / Экспресс / asp.NET
Ваши ссылки не работают таким образом,
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script>
<body ng-app="myApp">
<base href="/#/" />
<a href="blue">blue</a>
<a href="green">green</a> //blue.html and green.html are in same directory as index.html
<p>Click on the links to load blue or green.</p>
<div ng-view></div>
<script>
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider, $locationProvider) {
$routeProvider
.when("/blue/:name?", {
templateUrl: "blue.html",
controller: "blue_control"
})
.when("/green", {
templateUrl: "green.html",
controller: "green_control"
})
$locationProvider.html5Mode({
enabled: true
});
});
app.controller("blue_control", function($scope) {
$scope.msg = "this is blue";
});
app.controller("green_control", function($scope) {
$scope.msg = "this is green";
});
</script>
</body>
</html>
Угловая маршрутизация принимает идентификатор фрагмента (#
) и использует это чтобы показать вам правильный HTML-код, если вы перейдете к yourdomain.com/green
вместо yourdomain.com/#/green
, сервер отправит вашему браузеру индекс каталога каталога green
.
Что я сделал, это изменить ваш <base href="/" />
до <base href="/#/" />
!
Проблема в том, что вы не назначаете переменную $ routeProvider вашему контроллеру, это приводит к тому, что контроллер не сможет получить доступ к переменной $ routeParams
попробуйте
/*app.controller("blue_control", function($scope) {
$scope.msg = "this is blue";
});
app.controller("green_control", function($scope) {
$scope.msg = "this is green";
});*/
app.controller("blue_control", function($scope,$routeParams) {
console.log( $routeParams.term_user);
$scope.msg = "this is blue";
});
app.controller("green_control", function($scope,$routeParams) {
$scope.msg = "this is green";
});
UPDATE
blockquote>Я думаю, что вы не можете использовать версию маршрута с более низкой версией angulajs, пожалуйста, измените верхнюю версию угловых символов, например
/* <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>*/ <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<!DOCTYPE html> <html> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script> <body ng-app="app"> <base href="/#/" /> <a href="#/blue">blue</a> <a href="#/green">green</a> //blue.html and green.html are in same directory as index.html <p>Click on the links to load blue or green.</p> <div ng-view></div> <script> var app = angular.module("app", ['ngRoute']); app.config(function($routeProvider) { $routeProvider .when("/blue/:name?", { templateUrl: "blue.html", controller: "blue_control" }) .when("/green", { templateUrl: "green.html", controller: "green_control" }) }); app.controller("blue_control", ['MyFirstController',function($scope, $routeParams) { $scope.msg = "this is blue"; }]); app.controller("green_control", ['MyFirstController2',function($scope, $routeParams) { $scope.msg = "this is green"; }]); </script> </body> </html>