E人E本#
型号为 K9
- 高通 615 处理器
- 安卓4.4
- BL可以直接通过fastboot解锁
power
+音量上
是recovery; power
+音量下
是fastboot; power
+音量上
+音量下
是9008
全网也没找到折腾这玩意的文档,不过我提取到了升级包,分区镜像直接刷入就是完整的,多个 system 镜像逐个刷入即可
Root的话用Magisk早期版本重写boot.img就行,其他折腾方法同安卓4.4
原升级包下载链接,也可以致邮我获取
https://www.123865.com/s/GrarVv-Hbgn? 提取码:tqEM
电信特供三星s3#
power
+音量上
是recovery; power
+音量下
是download;
因为 I939I 是电信特供,所以试了些s3通用刷机包都不太行,这里附上原版刷机包和某论坛上的定制包,还有三方recovery
原版 https://www.123865.com/s/GrarVv-Qbgn? 提取码:FsJz
定制 https://www.123865.com/s/GrarVv-9bgn? 提取码:Rdm1
三方recovery https://www.123865.com/s/GrarVv-Abgn? 提取码:HX1E
其他#
另外附上一段赛博辉光钟代码,可以放老设备上当时钟,修改自win的小站
<!doctype html>
<html>
<head>
<title>canvas dClock</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
background: #282525;
text-align: center;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 100vh;
overflow: hidden;
}
canvas {
max-width: 100%;
height: auto;
}
.container {
position: relative;
width: 100%;
max-width: 500px;
margin: 0 auto;
}
footer {
margin-top: 20px;
color: #b3b3b3;
font-size: 8pt;
}
footer a {
color: #A2E3E0;
text-decoration: none;
}
</style>
</head>
<body>
<div class="container">
<canvas id="clock" width="500" height="200">
一个canvas程序,请升级你的浏览器!
</canvas>
</div>
<footer>
<!-- <p>Design by:<a href="http://www.winotmk.com/">win</a> July.2015</p> -->
</footer>
<script type="text/javascript">
var clock = document.getElementById("clock");
var win = clock.getContext("2d");
var isScrolling = false;
var scrollCounter = 0;
var scrollDigit = 0;
// 小时和分钟的滚动状态变量
var isHourScrolling = false;
var hourScrollCounter = 0;
var hourScrollDigit = 0;
var isMinuteScrolling = false;
var minuteScrollCounter = 0;
var minuteScrollDigit = 0;
// 记录上一次的时间,用于检测变动
var lastHour = -1;
var lastMinute = -1;
// 用于模拟秒数更新,因为更新频率现在是100ms
var frameCounter = 0;
var simulatedSecond = 0;
// 屏幕适配函数
function resizeCanvas() {
const container = document.querySelector('.container');
const containerWidth = container.clientWidth;
const canvasRatio = 500 / 200;
const newWidth = Math.min(500, containerWidth);
const newHeight = newWidth / canvasRatio;
clock.style.width = newWidth + 'px';
clock.style.height = newHeight + 'px';
showTime(1, 50);
}
window.addEventListener('resize', resizeCanvas);
resizeCanvas();
//显示数字时钟
function showTime(m, n) {
win.clearRect(0, 0, 500, 500);
var now = new Date;
var hour = now.getHours();
var min = now.getMinutes();
var sec = Math.floor(now.getTime() / 1000) % 60; // 使用真实时间计算秒数
// 检测小时变化,触发小时滚动
if (lastHour !== -1 && lastHour !== hour && !isHourScrolling) {
isHourScrolling = true;
hourScrollCounter = 0;
hourScrollDigit = 0;
}
// 检测分钟变化,触发分钟滚动
if (lastMinute !== -1 && lastMinute !== min && !isMinuteScrolling) {
isMinuteScrolling = true;
minuteScrollCounter = 0;
minuteScrollDigit = 0;
}
// 更新最后记录的时间
lastHour = hour;
lastMinute = min;
// 每5分钟触发全屏滚动效果
if (min % 5 === 0 && sec === 0 && !isScrolling) {
isScrolling = true;
scrollCounter = 0;
scrollDigit = 0;
}
if (isScrolling) {
// 滚动效果,依次显示0-9
let displayNum = scrollDigit;
bdigital(m + 20, n, displayNum);
bdigital(m + 180, n, displayNum);
bdigital(m + 340, n, displayNum);
scrollCounter++;
if (scrollCounter >= 1) { // 每个数字显示1帧(100ms)
scrollCounter = 0;
scrollDigit++;
if (scrollDigit > 9) {
isScrolling = false;
}
}
} else {
// 正常显示时间,考虑小时和分钟的独立滚动
hour = hour >= 10 ? hour : "0" + hour;
min = min >= 10 ? min : "0" + min;
sec = sec >= 10 ? sec : "0" + sec;
// 小时滚动效果
if (isHourScrolling) {
bdigital(m + 20, n, hourScrollDigit);
hourScrollCounter++;
if (hourScrollCounter >= 1) { // 每个数字显示1帧(100ms)
hourScrollCounter = 0;
hourScrollDigit++;
if (hourScrollDigit > 9) {
isHourScrolling = false;
}
}
} else {
bdigital(m + 20, n, hour);
}
// 分钟滚动效果
if (isMinuteScrolling) {
bdigital(m + 180, n, minuteScrollDigit);
minuteScrollCounter++;
if (minuteScrollCounter >= 1) { // 每个数字显示1帧(100ms)
minuteScrollCounter = 0;
minuteScrollDigit++;
if (minuteScrollDigit > 9) {
isMinuteScrolling = false;
}
}
} else {
bdigital(m + 180, n, min);
}
// 秒数正常更新,不参与滚动
bdigital(m + 340, n, sec);
}
//时,分,秒定位
function bdigital(x, y, num) {
var ge = num % 10;
var shi = (parseInt(num / 10)) % 10;
digital(x, y, shi);
digital(x + 70, y, ge);
}
//竖线
win.strokeStyle = '#666666';
win.lineWidth = 0.75;
win.lineCap = 'round';
win.beginPath();
win.moveTo(m + 167, n+49);
win.lineTo(m + 167, n+110);
win.moveTo(m + 326, n+49);
win.lineTo(m + 326, n+110);
win.stroke();
//小时与分钟之间
win.lineCap = 'round';
win.strokeStyle = "#d69e07";
win.shadowColor = '#c73406';
win.shadowOffsetX = 0;
win.shadowOffsetY = 0;
win.shadowBlur = 30; // 增强泛光效果
win.lineWidth = 4; // 增加线条粗细
win.beginPath();
win.moveTo(m + 167, n + 45);
win.lineTo(m + 167, n + 55);
win.fill();
win.closePath();
win.stroke();
win.beginPath();
win.moveTo(m + 167, n + 70);
win.lineTo(m + 167, n + 80);
win.fill();
win.closePath();
win.stroke();
//分钟与秒之间
win.beginPath();
win.moveTo(m + 326, n + 45);
win.lineTo(m + 326, n + 55);
win.fill();
win.closePath();
win.stroke();
win.beginPath();
win.moveTo(m + 326, n + 70);
win.lineTo(m + 326, n + 80);
win.fill();
win.closePath();
win.stroke();
}
//显示一位数字
function digital(x, y, num) {
//设置风格
function theme(){
var gradient = win.createLinearGradient(y, 0, y, x);
gradient.addColorStop("0", "#ff3f07"); // 更亮的起始颜色
gradient.addColorStop("0.5", "#ffa000"); // 更亮的中间颜色
gradient.addColorStop("1.0", "#ffe000"); // 更亮的结束颜色
win.strokeStyle = gradient;
win.lineWidth = 3; // 增加线条粗细
win.lineCap = 'round';
// 增强辉光效果
win.shadowColor = '#ff3e00';
win.shadowOffsetX = 0;
win.shadowOffsetY = 0;
win.shadowBlur = 35; // 增加模糊范围
}
// 添加泛光效果(多层叠加)
function addGlow() {
// 第一层泛光
win.globalCompositeOperation = 'lighter';
win.lineWidth = 2;
win.strokeStyle = 'rgba(255, 150, 50, 0.7)';
win.shadowColor = '#ff5c40';
win.shadowBlur = 45;
drawDigit();
// 第二层泛光,范围更大但更透明
win.lineWidth = 1.5;
win.strokeStyle = 'rgba(255, 180, 80, 0.4)';
win.shadowBlur = 60;
drawDigit();
// 恢复默认混合模式
win.globalCompositeOperation = 'source-over';
}
function drawDigit() {
switch (num) {
case 0: zero(); break;
case 1: one(); break;
case 2: two(); break;
case 3: three(); break;
case 4: four(); break;
case 5: five(); break;
case 6: six(); break;
case 7: seven(); break;
case 8: eight(); break;
case 9: nine(); break;
}
}
function wang(){
win.lineWidth = 0.7;
win.strokeStyle = 'rgba(15,10,10,0.5)';
win.shadowColor = 'rgba(0,0,0,0)';
win.shadowOffsetX = 0;
win.shadowOffsetY = 0;
var k = 5;
for (var i=0; i<22; i++){
for (var j=0; j<13; j++){
win.beginPath();
win.arc(x+j*k+2, y+i*k+2, 2.3, 0, Math.PI*2, true);
win.stroke();
}
}
}
function nolight(){
win.strokeStyle = '#666666';
win.lineWidth = 1;
win.lineCap = 'round';
win.shadowColor = 'rgba(0,0,0,0)';
win.shadowOffsetX = 0;
win.shadowOffsetY = 0;
zero(); one(); two(); three(); four();
five(); six(); seven(); eight(); nine();
}
//0
function zero() {
var k = .7922848,
a = 23,
b = 48,
ox = a * k, // 水平控制点偏移量
oy = b * k, // 垂直控制点偏移量
x2 = x+32,
y2 = y+54;
win.beginPath();
//从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线
win.moveTo(x2 - a, y2);
win.bezierCurveTo(x2 - a, y2 - oy, x2 - ox, y2 - b, x2, y2 - b);
win.bezierCurveTo(x2 + ox, y2 - b, x2 + a, y2 - oy, x2 + a, y2);
win.bezierCurveTo(x2 + a, y2 + oy, x2 + ox, y2 + b, x2, y2 + b);
win.bezierCurveTo(x2 - ox, y2 + b, x2 - a, y2 + oy, x2 - a, y2);
win.stroke();
}
//1
function one() {
win.beginPath();
win.moveTo(x+27, y+7);
win.lineTo(x+24, y+103);
win.stroke();
}
//2
function two() {
win.beginPath();
win.moveTo(x+9, y+25);
win.quadraticCurveTo(x+9, y+5, x+31.5, y+5);
win.quadraticCurveTo(x+54, y+5, x+54, y+25);
win.quadraticCurveTo(x+56, y+41, x+35, y+60);
win.quadraticCurveTo(x+10, y+82, x+10, y+97);
win.quadraticCurveTo(x+50, y+97, x+55, y+97);
win.stroke();
}
//3
function three() {
win.beginPath();
win.moveTo(x+9, y+9);
win.lineTo(x+46, y+9);
win.quadraticCurveTo(x+32, y+35, x+24, y+44);
win.quadraticCurveTo(x+49, y+41, x+46, y+71);
win.quadraticCurveTo(x+46, y+100, x+26, y+100);
win.quadraticCurveTo(x+7, y+100, x+7, y+85);
win.stroke();
}
//4
function four() {
win.beginPath();
win.moveTo(x+39, y+100);
win.lineTo(x+38, y+10);
win.lineTo(x+30, y+10);
win.lineTo(x+6, y+75);
win.lineTo(x+49, y+75);
win.stroke();
}
//5
function five() {
win.beginPath();
win.moveTo(x+46, y+9);
win.lineTo(x+18, y+9);
win.lineTo(x+11, y+51);
win.quadraticCurveTo(x+21, y+41, x+30, y+41);
win.quadraticCurveTo(x+49, y+41, x+49, y+73);
win.quadraticCurveTo(x+49, y+101, x+30, y+101);
win.quadraticCurveTo(x+12, y+100, x+9, y+82);
win.stroke();
}
//6
function six() {
win.beginPath();
win.moveTo(x+33, y+7);
win.quadraticCurveTo(x+10, y+35, x+10, y+69);
win.quadraticCurveTo(x+9, y+98, x+30, y+98);
win.quadraticCurveTo(x+53, y+97, x+53, y+69);
win.quadraticCurveTo(x+52, y+43, x+33, y+43);
win.quadraticCurveTo(x+10, y+47, x+10, y+69);
win.stroke();
}
//7
function seven() {
win.beginPath();
win.moveTo(x+5, y+12);
win.lineTo(x+52, y+12);
win.lineTo(x+30, y+100);
win.stroke();
}
//8
function eight() {
win.beginPath();
win.moveTo(x+31, y+8);
win.quadraticCurveTo(x+12, y+8, x+12, y+27.5);
win.quadraticCurveTo(x+12, y+47, x+31, y+47);
win.quadraticCurveTo(x+53, y+47, x+53, y+75);
win.quadraticCurveTo(x+53, y+102, x+31, y+102);
win.quadraticCurveTo(x+9, y+102, x+9, y+75);
win.quadraticCurveTo(x+12, y+47, x+31, y+47);
win.quadraticCurveTo(x+50, y+47, x+50, y+27.5);
win.quadraticCurveTo(x+50, y+8, x+31, y+8);
win.stroke();
}
//9
function nine() {
win.beginPath();
win.moveTo(x+24, y+100);
win.quadraticCurveTo(x+46, y+77, x+50, y+53);
win.quadraticCurveTo(x+52, y+39, x+52, y+29);
win.quadraticCurveTo(x+52, y+7, x+31, y+7);
win.quadraticCurveTo(x+11, y+7, x+11, y+31);
win.quadraticCurveTo(x+11, y+50, x+31, y+50);
win.quadraticCurveTo(x+52, y+50, x+52, y+29);
win.stroke();
}
//数字n
function number(n) {
switch (n) {
case 0: nolight(), theme(), zero(), addGlow(), wang(); break;
case 1: nolight(), theme(), one(), addGlow(), wang(); break;
case 2: nolight(), theme(), two(), addGlow(), wang(); break;
case 3: nolight(), theme(), three(), addGlow(), wang(); break;
case 4: nolight(), theme(), four(), addGlow(), wang(); break;
case 5: nolight(), theme(), five(), addGlow(), wang(); break;
case 6: nolight(), theme(), six(), addGlow(), wang(); break;
case 7: nolight(), theme(), seven(), addGlow(), wang(); break;
case 8: nolight(), theme(), eight(), addGlow(), wang(); break;
case 9: nolight(), theme(), nine(), addGlow(), wang(); break;
}
}
number(num);
}
// 每100毫秒更新一次时钟显示(之前是1000毫秒)
setInterval("showTime(1,50)", 100);
</script>
</body>
</html>